给定一个字符串,按单词将该字符串逆序。

[cpp]  view plain  copy
  1. /************************************************* 
  2. 题目: 给定一个字符串,按单词将该字符串逆序。 
  3. 如输入"hello world",输出为"world hello"。 
  4. *************************************************/  
  5.   
  6. /************************************************* 
  7. 思路: 先按单词逆序,再对整个句子逆序。 
  8. "hello world" ==> "olleh dlrow" ==> "world hello" 
  9. *************************************************/  
  10.   
  11. //测试程序  
  12. #include   
  13. using namespace std;  
  14.   
  15. void reverseWord(char *start, char *end);//对start~end之间字符串进行逆序  
  16. char *reverseSentence(char *s);//对整个字符串进行逆序  
  17.   
  18. int main()  
  19. {  
  20.     char sentence[] = "Hello World";  
  21.     cout<<"逆序前: "<
  22.     cout<<"逆序后: "<
  23.     return 0;  
  24. }  
  25. void reverseWord(char *start, char *end)  
  26. {  
  27.     while(start < end)  
  28.     {  
  29.         *start = *start ^ *end;  
  30.         *end = *start ^ *end;  
  31.         *start = *start++ ^ *end--;  
  32.     }  
  33. }  
  34. char *reverseSentence(char *s)  
  35. {  
  36.     char *p = s;    
  37.     char *q = s;    
  38.     while(*q != '\0')   
  39.     {    
  40.         if(*q == ' ')  
  41.         {  
  42.             reverseWord(p,q-1);    
  43.             q++; //q指向下一个单词的首字母    
  44.             p = q;    
  45.         }    
  46.         else    
  47.             q++;    
  48.     }    
  49.     reverseWord(p, q-1);//逆序最后一个单词  
  50.     reverseWord(s, q-1);//逆序整个句子  
  51.     return s;    
  52. }  

你可能感兴趣的:(数据结构,C/C++)