• 句子单词的逆转


           这里我们谈论的是句子单词的逆转。比如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 }

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

  • 相关阅读:
    (转载)linux 常用命令
    视图view
    Mysql增删改查
    mysql最基础命令
    mysql的基本操作
    (转载)RHEL7(RedHat 7)本地源的配置
    (转载)Linux之虚拟机 rehl7的ip
    js 基本
    java Servlet
    java Tttp协议和Tomcat
  • 原文地址:https://www.cnblogs.com/xiaoyi115/p/3621017.html
Copyright © 2020-2023  润新知