165. Compare Version Numbers

/*
 Compare two version numbers version1 and version2.
 If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
 
 You may assume that the version strings are non-empty and contain only digits and the . character.
 The . character does not represent a decimal point and is used to separate number sequences.
 For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
 
 Here is an example of version numbers ordering:
 
 0.1 < 1.1 < 1.2 < 13.37
 */

/*
 切割字符串,如果長度為1,補足為2
 Error:可能會出現(xiàn)多個版本,因此需要根據(jù)兩個版本中的居多者補齊,然后
 輸入一個比較函數(shù),比較每一個子版本
 */

func compareVersion(_ version1: String, _ version2: String) -> Int {
    
    var v1Array = version1.components(separatedBy: ".")
    var v2Array = version2.components(separatedBy: ".")
    
    let versionLength = max(v1Array.count, v2Array.count)
    
    for _ in 0..<versionLength-v1Array.count {
        v1Array.append("0")
    }
    
    for _ in 0..<versionLength-v2Array.count {
        v2Array.append("0")
    }
    
    //如果相等,則繼續(xù)比較,如果不等,則直接返回結(jié)果
    func compareResult(_ v1: String, _ v2: String) -> Int {
        if Int(v1)! > Int(v2)! {
            return 1
        }
        else if Int(v1)! < Int(v2)! {
            return -1
        }
        else {
            return 0
        }
    }
    
    var result = 0
    for i in 0..<versionLength {
        let ret = compareResult(v1Array[i], v2Array[i])
        if ret != 0 {
            result = ret
            break
        }
    }
    
    return result
}

compareVersion("1.0.1", "1")

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容