zoukankan      html  css  js  c++  java
  • c语言字符串翻转系列

    2013-10-25 

      最近碰到一道笔试题,是关于字符串翻转的。题目是:将一段英文翻转,但保留单词拼写,如给定字符串str="I am a student",返回为"student a am I"。(为简单代码,设给定字符串由' '和字母组成)。

      对于这个题目我的思路是,先不管单词拼写,将str完全翻转得到str="tneduts a ma I",然后再对str中每个单词逐个翻转。代码实现如下

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 char *revstr(char *str)//翻转字符串 
     5 {
     6     if(str==NULL) return str;
     7     char *start=str;
     8     char *left=str;
     9     char temp;
    10     
    11     while(*str++);//find ending of str 
    12     str-=2;
    13     while(left<str){
    14         temp=*left;
    15         *left++=*str;
    16         *str--=temp;
    17     }
    18     str=start;
    19     return(start);
    20 }
     1 char *revword(char *str)//翻转字符串中的单词 
     2 {
     3     char *start=str,*end=str,*p=str,temp;
     4     if(str==NULL) return str;
     5     
     6     while(1){//注意循环跳出条件 
     7         while(*start++==' ');//find word's first letter
     8         start--;
     9         
    10         p=start;
    11         while(*p!=' '){//find first ' ' or '' after a word;
    12             p++;
    13             if(*p=='') break;
    14         }
    15         end=p-1;//find word's last letter
    16         while(start<end){
    17             temp=*start,*start++=*end,*end--=temp;
    18         }
    19         if(*p=='') break;
    20         start=p+1;
    21     }
    22     return str;
    23 }
    24 int main()    
    25 {
    26     char str[100];
    27     while(gets(str)!=NULL)
    28     {
    29         puts(str);
    30         revstr(str);
    31         puts(str);
    32         revword(str);
    33         puts(str);
    34                 
    35     }
    36 }
  • 相关阅读:
    手脱ASPack2.12壳(练习)
    手脱UPX3.91壳(练习)
    如何在程序执行前插入可执行代码(算是吾爱的作业吧,活学活用)
    小米笔记本粉丝感恩狂欢趴【慎入!!】
    picpick截屏软件脱壳
    JAVA反序列化漏洞
    Java中的数据类型
    Java中常见的包
    Scrapy
    PHPstorm 函数时间注释的修改
  • 原文地址:https://www.cnblogs.com/johnleo/p/rev_string_without_word.html
Copyright © 2011-2022 走看看