Shawngbk / Leecode

Questions of Leecode
0 stars 0 forks source link

165. Compare Version Numbers #55

Open Shawngbk opened 7 years ago

Shawngbk commented 7 years ago

Java中String.split方法传入的参数是一个RegularExpr,是一个正则表达式。 在正则表达式中,点号表示所有字符的意思,所以需要用\来转义。 本题的解题思路就是,先将两个版本号按“.”分段,然后逐段比较。需要说明的是本题要考虑一个版本号与另一个版本号的前半段完全相同的情况(如“1.0”和“1.0.1”中“1.0.1”较大,“1.0”和“1.0.0”一样大)。 public class Solution { public int compareVersion(String version1, String version2) { String[] arr1 = version1.split("."); String[] arr2 = version2.split("."); int len1 = arr1.length; int len2 = arr2.length; int len = len1 <= len2 ? len1 : len2; int x1,x2; for(int i = 0; i < len; i++) { x1 = Integer.parseInt(arr1[i]); x2 = Integer.parseInt(arr2[i]); if(x1 > x2) { return 1; } if(x1 < x2) { return -1; } }

    if(arr1.length > arr2.length) {
        for(int i = len; i < arr1.length; i++) {
            if(Integer.parseInt(arr1[i]) > 0) {
                return 1;
            }
        }
    }
    if(arr1.length < arr2.length) {
        for(int i = len; i < arr2.length; i++) {
            if(Integer.parseInt(arr2[i]) > 0) {
                return -1;
            }
        }
    }
    return 0;
}

}

Shawngbk commented 7 years ago

Microsoft apple