LeetCode:Compare Version Numbers - 比較版本號

一、題目名稱java

Compare Version Numbers(比較版本號)code

二、題目地址leetcode

https://leetcode.com/problems/compare-version-numbers/開發

三、題目內容get

英文:Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.it

中文:比較兩個版本version1和version2,若是version1晚於version2,則返回1,若是version1早於version2,則返回-1,其餘狀況下返回0io

四、解題方法class

本題的解題思路就是,先將兩個版本號按「.」分段,而後逐段比較。須要說明的是本題要考慮一個版本號與另外一個版本號的前半段徹底相同的狀況(如「1.0」和「1.0.1」中「1.0.1」較大,「1.0」和「1.0.0」同樣大)。Java代碼以下:方法

/**
 * 功能說明:LeetCode 165 - Compare Version Numbers
 * 開發人員:Tsybius2014
 * 開發時間:2015年9月18日
 */
public class Solution {
    
    /**
     * 比較版本號
     * @param version1 版本號1
     * @param version2 版本號2
     * @return
     */
    public int compareVersion(String version1, String version2) {
       
        String[] versionArray1 = version1.split("\\.");
        String[] versionArray2 = version2.split("\\.");
        

        int len1 = versionArray1.length;
        int len2 = versionArray2.length;
        int len = len1 <= len2 ? len1 : len2;

        //共有版本號部分,從前向後比較對應位置數字
        int x1, x2;
        for (int i = 0; i < len; i++) {
            x1 = Integer.parseInt(versionArray1[i]);
            x2 = Integer.parseInt(versionArray2[i]);
            if (x1 > x2) {
                return 1;
            } else if (x1 < x2) {
                return -1;
            }
        }
        
        //共有版本號相等的狀況下,誰的版本號段數更多且多餘部分不全爲0,誰的版本更新
        if (len1 > len2) {
            for (int i = len; i < len1; i++) {
                if (Integer.parseInt(versionArray1[i]) > 0) {
                    return 1;
                }
            }
        } else if (len1 < len2) {
            for (int i = len; i < len2; i++) {
                if (Integer.parseInt(versionArray2[i]) > 0) {
                    return -1;
                }
            }
        }
        
        return 0;
    }
}

END英文

相關文章
相關標籤/搜索