字符串面试题(三)字符串按单词逆序

给定一个字符串,按单词将该字符串逆序,比如给定"you are ok",则输出是"ok are you"

分两步

1 先按单词逆序得到"uoy era ko"

2 再整个句子逆序得到"ok are you"

先写一个单词逆序函数.字符串以空格为单词的分界。当找到一个单词后,就可以使用上面讲过的方法将这个单词进行逆序,当所有的单词都逆序以后,将整个句子看做一个整体再逆序一次。代码实现如下:

//翻转单词
void ReverseAsWord(char *s1, char *s2){	
while (s1 < s2)	
 {		
char t = *s1;		
*s1 = *s2;		
*s2 = t;		
++s1;		
--s2;	
 }	
}
//翻转函数
char *ReverseString(char *s){	
char *s1 = s;	
char *s2 = s;//将前(n -1 )个单词逆序	
while (*s2 != '\0')	
{		
if (*s2 == ' ')		
 {			
ReverseAsWord(s1, s2 - 1);			
++s2;			
s1 = s2;		
 }		
else			
++s2;	}//将最后一个单词逆序	
ReverseAsWord(s1, s2 - 1);//将整个字符串逆序	
ReverseAsWord(s, s2 - 1);	
return s;
}

字符串面试题(三)字符串按单词逆序_第1张图片

 

你可能感兴趣的:(字符串)