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=='