请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
这个题需要注意的是在string里面把一个字符换成三个字符,需要调整size的大小;
1.在原有参数上改的话,需要对size进行增容,判断‘ ’个数进行增容;
string replaceSpace(string s) {
int count_e=0,len=s.size();
for(auto e:s){
if(e==' ')
count_e++;
}
s.resize(len+2*count_e);
for(int i=len-1,j=s.size()-1;i>=0;i--,j--){
if(s[i]==' '){
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j-=2;
}
else
s[j]=s[i];
}
return s;
2.新建一个string 的话,将原来参数的值插入,不用管增容,只要碰到‘ ’时插入“%20”即可;
string replaceSpace(string s) {
std::string s_copy;
for(auto e:s){
if(e==' '){
s_copy.push_back('%');
s_copy.push_back('2');
s_copy.push_back('0');
}else
s_copy.push_back(e);
}
return s_copy;