题目大意:
给定字符串str,将字符串内所有空格更换为“%20”。假设str后面有足够的空间容纳替换后的字符串。
思路:
1、遍历字符串得到空格个数n,进而得到替换后的字符串长度。如原字符串长度为l,替换后的字符串长度为l+2*n
2、替换后的字符串最后一个索引是l+2*n-1,从右往左赋值新字符串。
如
class Replacement {
public:
string replaceSpace(string iniString, int length) {
// write code here
int spacenum = 0;
for(int i = 0;i<length;i++){
if(iniString[i]==' ')
spacenum++;
}
int newlength= length + spacenum*2;
iniString.resize(newlength);//注意要重新设置string的大小
int i = newlength-1;
while(i>=0){
if(length>=1){
if(iniString[--length]!= ' ')
iniString[i--] = iniString[length];
else{
iniString[i--] = '0';
iniString[i--] = '2';
iniString[i--] = '%';
}
}
}
return iniString;
}
};
注意:
1、用resize()扩展string长度
2、此题相当于实现string中的replace函数