题目出自: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)的空间是怕重新拿出一个数组来倒过来复制,那样的方式确实比较糟糕。呵呵