02-替换字符串空格

 1 //请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 2 //---------------------------------------------
 3 //思路:已知字符串,需要求出替换后的字符串,则需要新建一个字符串数组,或者将原有的字符串扩充;
 4 
 5 #include <iostream>
 6 
 7 using namespace std;
 8 class Solution
 9 {
10 public:
11     void replaceSpace(char* str, int length)
12     {
13         //鲁棒性
14         if (str == NULL || length <= 0)
15         {
16             return;
17         }
18         //扩充长度=源字符串的长度+2*空格的个数
19         //循环变量、空白个数
20         int i = 0;
21         int blankCount = 0;
22         int count = 0;
23         while (str[i] != '\0')
24         {
25             count++;
26             if (str[i] == ' ')
27             {
28                 blankCount++;
29             }
30             ++i;
31         }
32         //新扩充的长度
33         int newLength = count + 2 * blankCount;
34         //遍历源字符串,从后往前遍历;
35         for (i = count; i >= 0 && i< newLength; i--)
36         {
37             if (str[i] == ' ')
38             {
39                 str[newLength--] = '0';
40                 str[newLength--] = '2';
41                 str[newLength--] = '%';
42             }
43             else
44             {
45                 str[newLength--] = str[i];
46             }
47         }
48         return;
49     }
50 };
51 int main()
52 {
53     Solution s;
54     char str[] = "A B C";//不要写char *str = "A B C";这指向的字符串常量,不能改变其内容
55     cout << str << endl;
56     int length = strlen(str);
57     cout << length << endl;
58     s.replaceSpace(str, length);
59     cout << str << endl;
60     system("pause");
61     return 0;
62 }

A B C
5
A%20B%20C
请按任意键继续. . .
验证结果

 

posted @ 2017-08-17 10:40  繁星的夜空2012  阅读(119)  评论(0编辑  收藏  举报