题意:
比如,输入:I come from China.
输出:China. from come I
思路:先将这个字符串整体倒置,再将单个单词倒置,这样既不需要移动元素,也不需要额外的辅助空间,还可以重用代码,很不错吧。
代码:
1 #include <iostream> 2 3 int len(char* str) {//计算字符串的长度 4 int length = 0; 5 for(int i = 0; str[i] != '\0'; i++) { 6 length++; 7 } 8 return length; 9 } 10 char* reverseWord(char* str ,int i,int j) {//根据i,j的位置反转单词 11 char temp; 12 while(i < j) { 13 temp = str[i]; str[i] = str[j]; str[j] = temp; 14 i++; j--; 15 } 16 return str; 17 } 18 char *strReverse(char *str) 19 {//字符串反转,用到了上面的函数 20 int length=len(str); 21 char *newStr=reverseWord(str,0,(length-1)); 22 23 for (int i=0; i<length; i++) { 24 int len=0; 25 while(newStr[i] != ' ' && newStr[i] !='\0') { 26 len++; 27 i++; 28 } 29 int k = i-len,j=i-1; 30 reverseWord(newStr,k,j); 31 } 32 33 return str; 34 } 35 36 int main(int argc, const char * argv[]) 37 { 38 char str[]="I come from China."; 39 int length=len(str); 40 strReverse(str); 41 for (int i=0; i<length;i++) 42 { 43 std::cout <<str[i]; 44 } 45 std::cout<<std::endl; 46 47 return 0; 48 }
转自:https://blog.csdn.net/tyuersunshine/article/details/51045694
原文链接: https://www.cnblogs.com/xuecl/p/12422374.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333560
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!