拿一个11702长度的字符串来测试,就是a-z不断的重复

 

import Foundation
class Solution {
    func reverseString1(s: String) -> String {
        var cchars = s.cStringUsingEncoding(NSUTF8StringEncoding)!
        for i in 0..<cchars.count/2{
            let temp = cchars[i]
            cchars[i] = cchars[cchars.count-i-2]
            cchars[cchars.count-i-2] = temp
        }
        return String.init(UTF8String: &cchars)!
    }
    
    func reverseString2(s: String) -> String {
        var rs = ""
        for c in s.characters{
            rs.insert(c, atIndex: rs.startIndex)
        }
        return rs
    }
    
    func reverseString3(s: String) -> String{
        let cchars:[CChar] = s.cStringUsingEncoding(NSUTF8StringEncoding)!
        var array = [CChar]()
        cchars.map({array.insert($0, atIndex: 0)})
        array.removeFirst()
        array.append(0)
        return String.init(UTF8String: &array)!
    }
    
}

 

1:0.00243902206420898s

2:2.2983570098877s

3:0.0125259757041931s

 

稍微感受一下这个差距。。原来我没想到居然会差这么远的。。。后来一个公司的招聘简介上给了一个算法网。

好奇了一下填了一下我平时翻转字符串用的方法,验证了一下,唔不错,结果正确。

结果提示,超时……

然后做了下测试。。。没想到啊。。。