面试题之原地倒转字符串

题目出自:http://fayaa.com/tiku/view/3/

嗯,照旧,据传说是MS/Google等等IT名企业的面试题:

给定一个字符串,比如:

the quick brown fox jumps over the lazy dog.

请设计程序将这个句子 倒转,即,完成以后如下:

dog. lazy the over jumps fox brown quick the

BTW: 时间空间都很重要

Update :给出一个解以后,面试官一般会让你“原地”倒转,即:不允许分配一个O(n)的空间,要求空间O(1)

 


用一位朋友的名言来说么就是套路,思路就是把整个句子先整体翻转, 然后把其中的每个单词拿出来翻转。

基本上就是这样:

a. "the quick brown fox jumps over the lazy dog."=> ".god zyal eht revo spmuj xof nworb kciuq eht"

b. ".god zyal eht revo spmuj xof nworb kciuq eht"=>(找到每个单词)"dog. lazy the over jumps fox brown quick the"

 

我们知道原地翻转单词是比较容易,拿一个中间变量前后swap就可以了,下面是自己的一个实现:

接下来么要找到一个句子里面的单词分别翻转,那么如此如此这般这般也就可以了:

试了一下,效果还是不错的。 开始说的不允许分配一个O(n)的空间是怕重新拿出一个数组来倒过来复制,那样的方式确实比较糟糕。呵呵

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值