算法还是个比较重要的东西,倒转字符串。

 

 

 

拿一个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

 

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

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

结果提示,超时……

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

转载于:https://www.cnblogs.com/kptanjunhao/p/5616114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值