https://leetcode.cn/problems/ti-huan-kong-ge-lcof/description/
源自“代码随想录”
数组填充类问题,可以预先给数组扩容到填充数组后的大小,用resize函数,然后从后向前操作。
从后向前操作的好处:1、不用像从前向后,每次都得给数组开辟新的空间,每次添加元素,添加元素后面的数组中的元素都得往后移位
2、不用申请新数组。
解题方法:双指针法,从后向前替换空格。
class Solution {
public:
string replaceSpace(string s) {
int count=0;
int sOldsize=s.size();
for(int i=0;i<s.size();i++){
if(s[i]==' ') count++;
}
s.resize(s.size()+count*2);
int sNewsize=s.size();
for(int i=sNewsize-1, j=sOldsize-1;j<i;j--,i--){
if(s[j]!=' '){
s[i]=s[j];
}else{
s[i]='0';
s[i-1]='2';
s[i-2]='%';
i-=2;
}
}
return s;
}
};