题目:请实现一个函数,把字符串中的每个空格替换成 ” %20 “。例如输入 “We are happy.”,则输出 “We%20are%20happy.”。
思路:当原字符串有足够空间,可以计算出替换后需要的总长度,从后往前碰见空格就替换,否则复制原字符。
#include <iostream>
#include <string>
using namespace std;
void replaceblank(char str[], int length) {
int countb = 0;
int olength = 0;
while (str[olength] != '\0') {
if (str[olength] == ' ')
++countb;
++olength;
}
int rlength = olength + 2 * countb;
while (rlength > olength) {
if (str[olength] == ' ') {
str[rlength--] = '0';
str[rlength--] = '2';
str[rlength--] = '%';
--olength;
} else
str[rlength--] = str[olength--];
}
}
int main(int argc, char const *argv[]) {
// char str[20] = "Wearehappy.";
char str[20] = " ";
cout << sizeof(str) << endl;
replaceblank(str, 20);
cout << str << endl;
return 0;
}