题目
代码
可以先将两个版本号用 “.” 分割,然后将得到的字符串转化为整数再逐个比较即可。
可通过 Integer.parseInt() 方法将字符串快速转化为整数,例如 “001”可通过该方法变成整数1,具体代码如下。
public int compareVersion(String version1, String version2){
String[] ver1 = version1.split("\\.");
String[] ver2 = version2.split("\\.");
for (int i = 0; i < ver1.length || i < ver2.length; i++) {
int x = 0, y = 0;
if (i < ver1.length) {
x = Integer.parseInt(ver1[i]);
}
if (i < ver2.length) {
y = Integer.parseInt(ver2[i]);
}
if (x > y){
return 1;
}
else if (x < y){
return -1;
}
}
return 0;
}
例如当版本号分别为 “1.001” 和 “1.01.1” 时,每次循环比较的结果为
i = 0:
x=1 = y=1
i = 1:
x=1 = y=1
i = 2:
x=0 < y=1
最终返回-1。
时空复杂度
时间复杂度:O(max(n,m))
空间复杂度:O(n+m)O。