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 请按任意键继续. . .
在代码的世界尽情的翱翔吧!