class Solution {
public:
void replaceSpace(char *str,int length) {
int count=0;//空格个数
int i=0;
while(str[i]!='\0')
{
if(str[i]==' '){count++;}
i++;
}
int finallength=i+2*count+1;//插入后字符串新的长度
int slen=finallength-1;//-1表示减去了'\0'的长度
if(finallength>length){return;}//表示没有空格则直接返回
else{
while((slen>i)&&(i>=0))
{
if(str[i]==' ')
{
str[slen--]='0';//索引递减形式来修改字符串
str[slen--]='2';
str[slen--]='%';
}
else{str[slen--]=str[i];}
i--;
}
}
}
};
通过题目可知即把字符串里的空格修改为“%20”,需考虑修改后的字符串的长度发生变化,则改变原字符串的长度,后再利用for循环判断是否空格后替换