[leedcode 165] Compare Version Numbers

Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37
public class Solution {
    public int compareVersion(String version1, String version2) {
        /*这个题目在实际中经常可能碰到,比如开发一个APP,在向用户推送升级版本的时候,
        我们需要根据当前用户的版本号来确定是否要提示用户升级,或者用户在主动检查是否有新版本的时候,
        我们需要通过版本号来判断当前用户是否可以获取更高版本。
        去掉分隔符,先去去掉分隔符后较短字符串,逐位比较。如果无法分出大小那么需要比较剩余的部分。*/
        String v1[]=version1.split("\\.");
        String v2[]=version2.split("\\.");
        for(int i=0;i<Math.min(v1.length,v2.length);i++){
            int res=compare(v1[i],v2[i]);
            if(res!=0) return res;
        }
        /*如果无法比较出来,那么可能是相等,或者继续比较较长的字符数组后面的部分,
            这部分可能转换为0则相等(1.0.0和1.0.0.0000.0),否则较长的比较大(1.1.1和1.1.1.2)。*/
        if(v1.length==v2.length) return 0;
        int len1=v1.length;
        int len2=v2.length;
        if(len1>len2){
            for(int i=len2;i<len1;i++){
                int s=Integer.valueOf(v1[i]);//必须要转化为int,"0000"
                if(s!=0) return 1;

            }
            return 0;
        }
         if(len1<len2){
            for(int i=len1;i<len2;i++){
                int t=Integer.valueOf(v2[i]);
                if(t!=0) return -1;

            }
            return 0;
        }
        return 0;

    }
    public int compare(String v1,String v2){
        int a=Integer.valueOf(v1);
        int b=Integer.valueOf(v2);
        if(a!=b)
            return a-b>0?1:-1;
        return 0;
    }
}
时间: 2024-10-16 21:53:40

[leedcode 165] Compare Version Numbers的相关文章

leetCode 165. Compare Version Numbers 字符串

165. Compare Version Numbers Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and t

No.165 Compare Version Numbers

No.165 Compare Version NumbersCompare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and

165. Compare Version Numbers - LeetCode

Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: public int compareVersion(String version1, String version2) { String[] v1Arr = version1.split("\\."); String[] v2Arr = version2.split("\\.&qu

[leet code 165]Compare Version Numbers

1 题目 Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character.The . cha

leetcode 165. Compare Version Numbers

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character. The . charac

【LeetCode】165 - Compare Version Numbers

Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character.The . characte

Java for LeetCode 165 Compare Version Numbers

Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character.The . characte

165. Compare Version Numbers (String)

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character. The . charac

165. Compare Version Numbers Leetcode Python

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0. You may assume that the version strings are non-empty and contain only digits and the . character. The . charac