Note:
先遍历一遍看看一共几个空格,然后给字符串后面扩展相应的位数
之后j
从最后扩展后的最后一位开始遍历,i
从原来的最后一位开始遍历,每次到空格了,就给补成%20
否则就直接copy过来
代码如下:
class Solution {
public:
string replaceSpace(string s) {
int num = 0, len = s.size();
for(auto& c: s) if(c == ' ') num ++;
for(int i = 0; i < num * 2; i ++) s += " ";
for(int i = len - 1, j = s.size() - 1; i >= 0; i --){
if(s[i] != ' ') s[j --] = s[i];
else if(s[i] == ' '){
s[j --] = '0';
s[j --] = '2';
s[j --] = '%';
}
}
return s;
}
};