题目:

Compare two version numbers vresion1 and version2

if version1>version2 return 1,if version1<version2 return -1,otherwise return 0.

思路:

① 1.0和1是一个版本,长度不一样,要检查一下“.”后面的是否是0;

②1.2小于1.12;

③通过字符串拆分成两段,判断前段是否相等,如果相等就判断小数点后面是否相等

代码:

1 public class CompareVersionNumbers {
 2 
 3     public static int compareVersion(String version1, String version2) {
 4         String[] s1 = version1.split("\\."); //通过\\将.进行转义
 5         String[] s2 = version2.split("\\.");
 6         int len1 = s1.length;
 7         int len2 = s2.length;
 8         int i, j;
 9         for (i = 0, j = 0; i < len1 && j < len2; i++, j++) {
10             if (Integer.parseInt(s1[i]) > Integer.parseInt(s2[j])) {
11                 return 1;
12             } else if (Integer.parseInt(s1[i]) < Integer.parseInt(s2[j])) {
13                 return -1;
14             }
15         }
16         while (i < len1) {
17             if (Integer.parseInt(s1[i]) != 0) {
18                 return 1;
19             }
20             i++;
21         }
22         while (j < len2) {
23             if (Integer.parseInt(s2[j]) != 0) {
24                 return -1;
25             }
26             j++;
27         }
28         return 0;
29     }
30 
31     public static void main(String[] args) {
32         int ret = compareVersion("1.0", "1");
33         System.out.println(ret);
34     }
35 }