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