题目
分析
思路:通过字符.对字符串进行分割,然后比较每一部分的大小。
import java.util.*;
import java.util.regex.Pattern;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
public int compare (String version1, String version2) {
// write code here
String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");
for(int i = 0; i < Math.max(v1.length,v2.length); i++) {
String s1 = i >= v1.length?"0":v1[i];
String s2 = i >= v2.length?"0":v2[i];
//判断s1和s2是否全0
boolean b1 = Pattern.matches("0+",s1);
boolean b2 = Pattern.matches("0+",s2);
if(b1== true && b2 == true) {
continue;
}else if(b1 == true) {
return -1;
} else if(b2 == true) {
return 1;
} else {
//去掉前导0
int j = 0;
for (j = 0; j < s1.length(); j++) {
if (s1.charAt(j) != '0') {
break;
}
}
s1 = s1.substring(j);
j = 0;
for (j = 0; j < s2.length(); j++) {
if (s2.charAt(j) != '0') {
break;
}
}
s2 = s2.substring(j);
if (s1.length() > s2.length()) {
return 1;
} else if (s1.length() < s2.length()) {
return -1;
} else {
int m = s1.compareTo(s2);
if (m == 0) {
continue;
} else {
return m > 0 ? 1:-1;
}
}
}
}
return 0;
}
}