题解 | #比较版本号#
比较版本号
http://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
import java.util.*;
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("\\.");
int n1 = v1.length, n2 = v2.length;
int i = 0, j = 0;
while (i < n1 && j < n2) {
String v1Str = v1[i++];
String v2Str = v2[j++];
int ii = 0, jj = 0;
// 去除前导0
while (ii < v1Str.length() && v1Str.charAt(ii) == '0') ii++;
while (jj < v2Str.length() && v2Str.charAt(jj) == '0') jj++;
// 根据长度判断大小
if (v1Str.length() - ii > v2Str.length() - jj) {
return 1;
} else if (v1Str.length() - ii < v2Str.length() - jj) {
return -1;
}
// 长度相同的情况下逐位比较
while (ii < v1Str.length() && jj < v2Str.length()) {
int a = v1Str.charAt(ii) - '0';
int b = v2Str.charAt(jj) - '0';
if (a > b) return 1;
else if (a < b) return -1;
ii++;
jj++;
}
}
while (i < n1) {
String v1Str = v1[i++];
int ii = 0;
// 1.2.0000.0
// 1.2
while (ii < v1Str.length() && v1Str.charAt(ii) == '0') ii++;
if (ii < v1Str.length()) return 1;
}
while (j < n2) {
String v2Str = v2[j++];
int ii = 0;
while (ii < v2Str.length() && v2Str.charAt(ii) == '0') ii++;
if (ii < v2Str.length()) return -1;
}
return 0;
}
} 