Compare Version Numbers LC解题记录

417 查看

题目内容

比较不同的版本号,并根据大小返回-1,1或0。并提醒2.5版本意思是第二代的第五次升级,反正不是数字上的2.5的意思。

解决思路

直观的想法是,找到比较两个字符串(版本号)的方法,举个例子,1.1.2和1.2.3的比较,那么先比较第一位,两个1相等。那么就再看第二位,1<2,得出结果。
根据这个思路,先把字符串拆分成字符串数组,然后逐个比较即可。

代码

public class Solution {
    public int compareVersion(String version1, String version2) {
        //拆分两个字符串
        String[] v1 = version1.split("\\.");
        String[] v2 = version2.split("\\.");
        int l1 = v1.length, l2 = v2.length;
        int len = Math.max(l1,l2);
        //这里用最大的长度作为循环范围
        for(int i = 0; i < len; i++){
            //因为循环范围是最大长度,所以缺的位置补0
            int cur1 = i < l1 ? Integer.valueOf(v1[i]) : 0;
            int cur2 = i < l2 ? Integer.valueOf(v2[i]) : 0;
            if(cur1 < cur2) return -1;
            else if(cur1 > cur2) return 1;
        }
        return 0;
    }
}

复杂度分析

O(m+n),m和n分别是两个字符串的长度。