从后往前替换,避免每次都要挪动后面的元素
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
string replaceSpace(string s) {
if (s.empty()) {
return "";
}
int blank = 0;
int old_size = s.size();
for (const auto &it : s) {
if (it == ' ') {
++blank;
}
}
s.resize(old_size + 2 * blank);
int front = old_size - 1, back = s.size() - 1;
while (front >= 0 && front < back) {
while (s[front] != ' ') {
s[back] = s[front];
--back;
--front;
}
--front;
s[back--] = '0';
s[back--] = '2';
s[back--] = '%';
}
return s;
}
};