题解 | #比较版本号#
比较版本号
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; } }