拿一个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
稍微感受一下这个差距。。原来我没想到居然会差这么远的。。。后来一个公司的招聘简介上给了一个算法网。
好奇了一下填了一下我平时翻转字符串用的方法,验证了一下,唔不错,结果正确。
结果提示,超时……
然后做了下测试。。。没想到啊。。。