版本比較 swift

昨天收到一個面試題,讓我寫完給他發過去.原題如下:

您好!麻煩您用任何熟悉的編程語言實現function versionCompare(v1, v2)(版本號比較)函數及測試用例。對任意軟件的版本號進行大小比較,輸入參數為兩個版本號(格式情況請自行考慮),目標是做成庫給外部開發者用。不得使用現成的版本比較函數。重點考察各類情況處理。

以下為我的答案,
今天反饋我說代碼沒有達到要求,不知道問題出在哪里,如果你知道,請告訴我 謝謝.

    //版本比較
    func versionCompare(v1:String,v2:String) -> String {
        //判斷合法性
        if checkSeparat(vString: v1) == "" || checkSeparat(vString: v2) == ""{
        return "只支持 '.''-'/''*'_'作為分隔符"
        }
        //獲得兩個數組
        let v1Arr = cutUpNumber(vString: v1) as! [String]
        let v2Arr = cutUpNumber(vString: v2) as! [String]
        //比較版本號
        return compareNumber(v1Arr: v1Arr, v2Arr: v2Arr)
    }
    //提取連接符
    func checkSeparat(vString:String) -> String {
        var separated:String = ""
        if vString.contains("."){  separated = "." }
        if vString.contains("-"){  separated = "-" }
        if vString.contains("/"){  separated = "/" }
        if vString.contains("*"){  separated = "*" }
        if vString.contains("_"){  separated = "_" }
        
        return separated
    }
    //提取版本號
    func cutUpNumber(vString:String) -> NSArray {
        let  separat = checkSeparat(vString: vString)
        let b = NSCharacterSet(charactersIn:separat) as CharacterSet
        let vStringArr = vString.components(separatedBy: b)
        return vStringArr as NSArray
    }
    //比較版本
    func compareNumber(v1Arr:[String],v2Arr:[String]) -> String {
        for i in 0..<v1Arr.count{
            if  Int(v1Arr[i])! != Int(v2Arr[i])! {
                if Int(v1Arr[i])! > Int(v2Arr[i])! {
                    return "v1 > v2"
                }else{
                    return "v1 < v2"
                }
            }
        }
        return "v1 == v2"
    }
        /*
         //相同分隔符
         v1 = "1.0.0" v2 = "1.2.0" 結果: "v1 < v2"
         v1 = "0.1.0" v2 = "1.2.0" 結果: "v1 < v2"
         v1 = "1.1.0" v2 = "1.0.1" 結果: "v1 > v2"
         v1 = "99.0.0" v2 = "1.1.1" 結果: "v1 > v2"
         v1 = "99.1.1" v2 = "99.1.1" 結果: "v1 == v2"
        //不同分隔符
         v1 = "1*0*0" v2 = "1.2.0" 結果: "v1 < v2""
         v1 = "99.1.1" v2 = "99*1*1" 結果: "v1 == v2"
         */
        
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容