题目:
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 }