【题目】
Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
You may assume that the version strings are non-empty and contain only digits and the .
character.
The .
character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5
is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
【分析】
比较版本号。
先观察版本号比较的规律,从前往后扫描,分割出版本头,进行比较,然后比较剩下的字符串。
【代码】
class Solution {
public int compareVersion(String version1, String version2) {
//思路:一个点一个点比较,先分隔出第一个点之前的数字,比较大小,如果相等,比较第二个点前的数字
if(version1.length()==0 || version2.length()==0){
if(version.length()==0 && version.length()==0) return 0;
else if(version1.length()==0) return compareVersion("0",version2);
else return compareVersion(version1, "0");
}
String subStr1="",subStr2="";
int index1=version1.indexOf(".");
int index2=version2.indexOf(".");
if(index1==-1){
subStr1=version1;
version1="";
}
else{
subStr1=version1.substring(0,index1);
version1=version1.substring(index1+1);
}
if(index2==-1){
subStr2=version2;
version2="";
}else{
subStr2=version2.substring(0,index2);
version2=version2.substring(index2+1);
}
int a=Integer.valueOf(subStr1);
int b=Integer.valueOf(subStr2);
if(a>b) return 1;
else if(a==b){
if(version1.equals("") && version2.equals("")) return 0;
else return compareVersion(version1,version2);
}
else return -1;
}
}
【收获】
注意判断参数。