基本是教材上的思路,但是也参考了评论区的题解
主要是因为书上因为已经考虑到替换后会延长,所以给的字符串的长度足够长
而题目给的字符串是替换前的,没有预留长度,必须手动申请新的空间
class Solution {
public:
string replaceSpace(string s) {
int blanknumber=0;
int originalnumber=s.length()-1;
int i=0;
while(s[i]!='\0')
{
if(s[i]==' ')
{
s+="00";//申请新的空间,延长字符数组的长度
}
i++;
}
int newnumber=s.length()-1;
int indexold=originalnumber;
int indexnew=newnumber;
while(indexold>=0&&indexnew>indexold)
{
if(s[indexold]==' ')
{
s[indexnew--]='0';
s[indexnew--]='2';
s[indexnew--]='%';
}
else
{
s[indexnew--]=s[indexold];
}
indexold--;
}
return s;
}
};