题意:比较两个版本号的大小,第一个版本号小于第二个版本号,返回-1;第一个版本号大于第二个版本号,返回 1;其余情况返回0;
解题思路:
1)以”."分割字符串得到两个字符串数组;
2)以长度小的字符串的长度为准比较相同位置的字符的大小,若找到大于或小于的情况,则返回-1或1;
3)在2)的基础上若没有返回结果,说明相同位置的字符大小都相同,遍历长度大的字符串数组剩余的元素,
若某一个位置的元素不为0,则返回-1(第一个版本号长度小于第二个版本号)或1(第一个版本号长度小于 第二个版本号)。
package com.lulu.leetcode;
public class C_compareVersion {
public int compareVersion(String version1, String version2) {
if(version1==null || version2==null){
return 0;
}
String []ver1=version1.split("\\.");
String []ver2=version2.split("\\.");
int len1=ver1.length;
int len2=ver2.length;
int len=0;
if(len1<=len2){
len=len1;
}
else{
len=len2;
}
int re=0;
for(int i=0;i<len;i++){
if(Integer.parseInt(ver1[i])> Integer.parseInt(ver2[i])){
re=1;
return re;
// break;
}
if(Integer.parseInt(ver1[i])< Integer.parseInt(ver2[i])){
re=-1;
return re;
}
}
System.out.println("re="+re+"len1="+len1+"len2="+len2+"len="+len);
if(len1<len2 ){
System.out.println("len1<len2");
for(int j=len;j<len2;j++){
System.out.println(Integer.parseInt(ver2[j]));
if(Integer.parseInt(ver2[j])!=0){
re=-1;
break;
}
}
}
if(len1>len2){
System.out.println("len1>len2"+Integer.parseInt(ver1[len]));
for(int j=len;j<len1;j++){
System.out.println(Integer.parseInt(ver1[j]));
if(Integer.parseInt(ver1[j])!=0){
re=1;
break;
}
}
}
return re;
}
/**
* @param args
*/
public static void main(String[] args) {
C_compareVersion c=new C_compareVersion();
String vString1="1.1.1";
String vString2="1.1";
System.out.print(c.compareVersion(vString1, vString2));
// TODO Auto-generated method stub
}
}