zoukankan      html  css  js  c++  java
  • 句子单词的逆转

           这里我们谈论的是句子单词的逆转。比如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!='')
     4         pend++;
     5     pend--;//搜索到最后一个字母,使pend指针指向最后一个字符
     6     reverse(sourceStr,pend);   //反转句子
     7     char *n=sourceStr;
     8     while(*n!=''){
     9         while(*n==' ')//忽略空格键
    10             n++;
    11         char *m=n;
    12         //反转用‘ ’分割
    13         while(*n!=' '&&*n!='')
    14             n++;
    15         n--;//n指向单词的最后一个字符
    16         reverse(m,n);//再对每个单词进行翻转
    17         n++;
    18     }
    19     return sourceStr;
    20 }

         版权所有,欢迎转载,但是转载请注明出处:潇一

  • 相关阅读:
    maven .assembly
    命令参数解析库JCommonder
    OWL,以及XML,RDF
    Ambari是什么?
    上海新桥>风景服务区>宁波江东区车管所 及返程路线
    武汉旅游地图(zz)
    武汉旅游(zz)
    上海市松江区 <> 上海市金山区枫泾·万枫东路ab6177,racehttp://live.racingchina.com/
    明中路明华路到第九人民医院路线
    月台路春申塘桥到虹桥火车站
  • 原文地址:https://www.cnblogs.com/xiaoyi115/p/3621017.html
Copyright © 2011-2022 走看看