java常用算法题之比较版本号

 public static int compareVersion(String version1, String version2) {
        String[] s1 = version1.split("\\."); //通过\\将.进行转义
        String[] s2 = version2.split("\\.");
        int len1 = s1.length;
        int len2 = s2.length;
        int i, j;
        for (i = 0, j = 0; i < len1 && j < len2; i++, j++) {
            if (Integer.parseInt(s1[i]) > Integer.parseInt(s2[j])) {
                return 1;
            } else if (Integer.parseInt(s1[i]) < Integer.parseInt(s2[j])) {
                return -1;
            }
        }
        while (i < len1) {
            if (Integer.parseInt(s1[i]) != 0) {
                return 1;
            }
            i++;
        }
        while (j < len2) {
            if (Integer.parseInt(s2[j]) != 0) {
                return -1;
            }
            j++;
        }
        return 0;
    }

核心思想是把字符串拆分成字符数组,然后转成int去挨个比较,最后的while循环是为了判断出差值位数,比如 1.2.3 和 1.2 比较第三位是否为0,如果为0的话,就继续比较第四位。如果不为0的话。就直接说明了,当前的版本号是大的或者是小的。

你可能感兴趣的:(Android)