import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
public int compare (String version1, String version2) {
//先将版本字符串按照 “.”分割
String[] arr1 = version1.split("\\.") ;
String[] arr2 = version2.split("\\.") ;
int i = 0 ;
int j = 0 ;
//然后逐一比较每一段的大小
while(i < arr1.length && j < arr2.length) {
if(cmpStrNum(arr1[i],arr2[j]) > 0) {
return 1 ;
} else if(cmpStrNum(arr1[i],arr2[j]) < 0) {
return -1 ;
}
i++ ;
j++ ;
}
if(i == arr1.length && j == arr2.length) {
return 0 ;
} else if(i == arr1.length) {//注意:有可能某一方的后续修订号全是0,因此需要继续判断
while(j < arr2.length) {
if(!isZeroStr(arr2[j])) {
return -1 ;
}
j++ ;
}
return 0 ;
} else {
while(i < arr1.length) {
if(!isZeroStr(arr1[i])) {
return 1 ;
}
i++ ;
}
return 0 ;
}
}
//比较两个字符串代表的数字的 大小
//s1>s2返回1 ;s1 < s2返回-1 ;s1=s2返回0
public int cmpStrNum(String s1 , String s2) {
char[] a1 = s1.toCharArray() ;
char[] a2 = s2.toCharArray() ;
//分别去除s1,s2的前导零
int i1 = 0 ;
while(i1 < a1.length && a1[i1] == '0') {
i1 ++ ;
}
int i2 = 0 ;
while(i2 < a2.length && a2[i2] == '0') {
i2 ++ ;
}
//若存在两串或某一个串全为0则可以直接比较出大小
if(i1 == a1.length && i2 == a2.length) {
return 0 ;
} else if (i1 == a1.length) {
return -1 ;
} else if(i2 == a2.length) {
return 1 ;
} else {//有效数字的起点
//先比较长度(长的肯定大)0,1,2,3
if(a1.length-i1 > a2.length-i2) {
return 1 ;
} else if(a1.length-i1 > a2.length-i2) {
return -1 ;
} else {
//长度一样再逐位比较
while(i1 < a1.length && i2 < a2.length) {
if(a1[i1] > a2[i2]) {
return 1 ;
} else if(a1[i1] < a2[i2]) {
return -1 ;
}
i1++ ;
i2++ ;
}
return 0 ;
}
}
}
//判断是不是 “零串”
public boolean isZeroStr(String str) {
for(int i = 0 ; i < str.length() ; i ++) {
if(str.charAt(i) != '0') {
return false ;
}
}
return true ;
}
}