https://www.lintcode.com/problem/compare-version-numbers/description
给定两个版本号,要求返回哪个版本号更新。版本号的格式是非空字符串,且只含小数点和数字,且数字以小数点隔开。如果第一个版本号比第二个更新,则返回 1 1 1,如果第二个更新则返回 − 1 -1 −1,一样新则返回 0 0 0。
先按照小数点split开,然后依次比较对应位置的数字,如果发现不同了,则数字大者版本号更新。如果都相同,则比较split后的数组长度,长度更长者更新;如果一样长,则返回 0 0 0。代码如下:
public class Solution { /** * @param version1: the first given number * @param version2: the second given number * @return: the result of comparing */ public int compareVersion(String version1, String version2) { // Write your code here String[] l1 = version1.split("\\."), l2 = version2.split("\\."); for (int i = 0; i < Math.min(l1.length, l2.length); i++) { int v1 = Integer.parseInt(l1[i]), v2 = Integer.parseInt(l2[i]); if (v1 != v2) { return Integer.compare(v1, v2); } } if (l1.length == l2.length) { return 0; } else { return l1.length > l2.length ? 1 : -1; } } }时空复杂度 O ( n 1 + n 2 ) O(n_1+n_2) O(n1+n2)。