LeetCode比較版本號Java

題目描述:

比較兩個版本號 version1 和 version2。
如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。輸入有兩行,第一行表示version1,第二行表示version2。
你可以假設版本字符串非空,並且只包含數字和 . 字符。
. 字符不代表小數點,而是用於分隔數字序列。
例如,2.5 不是“兩個半”,也不是“差一半到三”,而是第二版中的第五個小版本。
你可以假設版本號的每一級的默認修訂版號爲 0。例如,版本號 3.4 的第一級(大版本)和第二級(小版本)修訂號分別爲 3 和 4。其第三級和第四級修訂號均爲 0。

輸入輸出示例:

示例 1:

輸入:
0.1
1.1
輸出: -1

示例 2:

輸入: 
1.0.1
1
輸出: 1

示例 3:

輸入:
7.5.2.4
7.5.3
輸出: -1

示例 4:

輸入:
1.01
1.001
輸出:0
//解釋:忽略前導零,“01” 和 “001” 表示相同的數字 “1”。

示例 5:

輸入:
1.0
1.0.0
輸出:0
//解釋:version1 沒有第三級修訂號,這意味着它的第三級修訂號默認爲 “0”。

題解如下:

class Solution {
    public int compareVersion(String version1, String version2) {
        int[] arr1 = Split_Str(version1);
        int[] arr2 = Split_Str(version2);
        int minLen,maxLen;//分別存儲長度短的數組長度和長度長的數組長度
        boolean isBig = true;//默認version1是長度較長的數組
        //判斷數組長度大小,把長度分別存儲起來,並記錄誰是較長的數組
        if(arr1.length>=arr2.length){
            minLen = arr2.length;
            maxLen = arr1.length;
            isBig = true;
        }else{
            minLen = arr1.length;
            maxLen = arr2.length;
            isBig = false;
        }
        //判斷版本號大小
        for(int i =0;i<minLen;i++){
            if(arr1[i]<arr2[i])
                return -1;
            else if(arr1[i]>arr2[i])
                return 1;
        }
        if(isBig){ //version1較長的話,判斷version1剩下的數據
            for(int i = minLen ;i<maxLen;i++){
                if (arr1[i]>0){
                    return 1;
                }
            }
        }else{ //否則判斷version2剩下的數據
            for(int i = minLen ;i<maxLen;i++){
                if (arr2[i]>0){
                    return -1;
                }
            }
        }
        //前面均沒有比較出大小,那麼就只能是大小相等了
        return 0;
    }
    
    //將版本號以 . 字符切割,存入int型數組,以便後面比較大小
    public int[] Split_Str (String version){
        String[] arr_str = version.split("\\.");
        int[] arr = new int[arr_str.length];
        for(int i = 0;i<arr.length;i++){
            arr[i] = Integer.parseInt(arr_str[i].trim());
        }
        return arr;
    }
}

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/compare-version-numbers
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章