这里我们谈论的是句子单词的逆转。比如you are welcome!翻转成weclome! are you
对于这道题,解题思路可以有很多种,可以以单词为单位,然后交换,比如用you 和weclome!交换,利用两个指针,不断的向后和向前搜索。
但是由于单词的长度的不一致性,即不对称,那么显然需要额外开辟空间,临时保存单词。而且这种方式特别容易出错,所以一般不建议这种方式进行处理。
我们这里介绍一种方法:
如果我们说单词反转,比如word反转成drow,大家是不是非常熟悉呢?这样通过两个指针,不断搜索就可以达到目的了。
那我们深入思考一下,句子是不是也可以看成一个单词呢?you are welcome! 反转成!emoclew era uoy
聪明的你肯定看出了端倪,经过两次反转不就得到了我们需要的结果吗?YES ,YOU ARE RIGHT!我们再把单词反转一遍,结果就出来了。
下面附上代码:仅供参考!
1 //整个语句反转,语句可以是单词或者句子.这和链表的逆转是不是非常相似呢? 2 char* reverse(char *sourceStr,char *last){ 3 assert(sourceStr); 4 char* des=sourceStr; 5 while(des<last){ 6 char temp=*des; 7 *des=*last; 8 *last=temp; 9 des++,last--; 10 } 11 return sourceStr; 12 }
1 char* reverseStence(char *sourceStr){ 2 char* pend=sourceStr; 3 while(*pend!='