我的算法:
public class Solution {
public int compareVersion(String version1, String version2) {
// split . | 转义符号要区别对待
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
int size1 = v1.length;
int size2 = v2.length;
int i = 0;
int result = 0;
while(i < size1 && i < size2){
int num1 = Integer.valueOf(v1[i]);
int num2 = Integer.valueOf(v2[i]);
if(num1 > num2){
result = 1;
break;
} else if(num1 < num2) {
result = -1;
break;
} else {
result = 0;
}
i++;
}
if(result == 0){
if(size1 > size2 && !allZero(v1,i)) {
result = 1;
} else if (size1 < size2 && !allZero(v2,i)) {
result = -1;
}
}
return result;
}
private boolean allZero(String[] nums,int from){
int size = nums.length;
for(int i = from;i<size;i++){
if(Integer.valueOf(nums[i]) != 0) return false;
}
return true;
}
}
在字符串编程的时候出现的一个问题:
转义符问题
在上面,我尝试使用 split(“.”) 来分割字符串,但是失败了,因为 “.”是转义字符,应该用 “\.”来表示
其他的转义字符情况相似