class Solution {
public:
string replaceSpace(string s) {
int index1 = s.size() - 1;
int count = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') {
count++;
}
}
s.resize(s.size() + 2 * count);
int index2 = s.size() - 1;
for (; index1 < index2; index1--, index2--) {
if (s[index1] != ' ') {
s[index2] = s[index1];
} else {
s[index2--] = '0';
s[index2--] = '2';
s[index2] = '%';
}
}
return s;
}
};
时间复杂度:O(N)
空间复杂度:O(1)
知识点:当遇到数组填充的问题时,都可以先把数组填充到需要的大小,然后从后向前进行操作。
这样就不用申请新数组,同时从后向前操作(利用双指针)不需要向后移动每个数组元素。