题意:
比如,输入: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】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/193995
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!