原地操作,从后往前复制
class Solution {
public:
string replaceSpace(string s) {
int ori_size = s.size();
int blank_nums = 0;
for(auto i:s) {
if(i==' ')
blank_nums++;
}
int new_size = ori_size + 2 * blank_nums;
s.resize(new_size);
int ori_tail_ptr = ori_size - 1;
int new_tail_ptr = new_size - 1;
while(ori_tail_ptr >= 0 && ori_tail_ptr < new_tail_ptr) {
if(s[ori_tail_ptr] == ' ') {
s[new_tail_ptr--] = '0';
s[new_tail_ptr--] = '2';
s[new_tail_ptr--] = '%';
}
else {
s[new_tail_ptr--] = s[ori_tail_ptr];
}
ori_tail_ptr--;
}
return s;
}
};
非原地操作
class Solution {
public:
string replaceSpace(string s) {
string array;
for(auto &c : s){
if(c == ' '){
array.push_back('%');
array.push_back('2');
array.push_back('0');
}
else{
array.push_back(c);
}
}
return array;
}
};