比较两个版本号的大小,首先自然是把两个String以"."分离开来,然后对它们一个一个进行比较。注意当其中的一个版本号长度比较小的时候,就在比较中将它设置为0,整体的代码如下:
public class Solution {
public int compareVersion(String version1, String version2) {
String[] version1s = version1.split("\\.");
String[] version2s = version2.split("\\.");
int length = Math.max(version1s.length, version2s.length);
for(int i = 0; i < length; i++){
Integer v1 = i < version1s.length ? Integer.parseInt(version1s[i]) : 0;
Integer v2 = i < version2s.length ? Integer.parseInt(version2s[i]) : 0;
int compare = v1.compareTo(v2);
if(compare != 0) return compare;
}
return 0;
}
}
注意int值不能进行i.compareTo(j),只有将它转化为Integer类之后才可以进行compareTo()的操作;另外注意在分割String的时候,我们使用了split("\\."),其中第一个\表示转义,表明第二个\指的是\而不是其他的意思,这时第二个\指的就是转义的意思,所以.就是指的.而不是其他的意思。总的来说对于.和|的分割,都要写成split("\\|")。
知识点:
1. primitive type的compareTo()的用法,都要先将其升格为对应的类
2. split("\\."); split("\\.")