美文网首页
版本比较 swift

版本比较 swift

作者: Heikki_ | 来源:发表于2017-03-24 09:02 被阅读352次

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

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

    相关文章

      网友评论

          本文标题:版本比较 swift

          本文链接:https://www.haomeiwen.com/subject/afpxottx.html