Compare Version Numbers LC解題記錄

題目內容

比較不一樣的版本號,並根據大小返回-1,1或0。並提醒2.5版本意思是第二代的第五次升級,反正不是數字上的2.5的意思。數組

解決思路

直觀的想法是,找到比較兩個字符串(版本號)的方法,舉個例子,1.1.2和1.2.3的比較,那麼先比較第一位,兩個1相等。那麼就再看第二位,1<2,得出結果。
根據這個思路,先把字符串拆分紅字符串數組,而後逐個比較便可。code

代碼

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分別是兩個字符串的長度。leetcode

相關文章
相關標籤/搜索