题目
- 原文:
Write a method to replace all spaces in a string with ‘%20’. - 译文:
写一个函数,把字符串中所有的空格替换为%20。
思路
- 找到所有空格(n个),将其替换为‘%20’,此时整个字符串长度增加2n。
代码
#include<iostream>
#include<cstring>
using namespace std;
void replaceString(char* c) {
int n = strlen(c);
int nblock = 0;
for(int i = 0; i < n; i++) {
if(c[i] == ' ') {
nblock++;
}
}
int p = n + nblock * 2;
char* newc = new char[p];
newc[p--] = '\0';
for(int i = n-1; i >=0; i--) {
if(c[i] == ' ') {
newc[p--] = '0';
newc[p--] = '2';
newc[p--] = '%';
}
else {
newc[p--] = c[i];
}
}
strcpy(c, newc);
}
int main() {
char c[] = "ab cd d ";
replaceString(c);
cout << c << endl;
}