版本比较 swift

2017-03-24  本文已影响352人  Heikki_

昨天收到一个面试题,让我写完给他发过去.原题如下:

您好!麻烦您用任何熟悉的编程语言实现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"
         */
        
上一篇下一篇

猜你喜欢

热点阅读