题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {
int blanknumber=0;/*定义空格数量*/
int new_string=0;
int old_string=0;/*分别定义旧的字符串和新的字符串的长度*/
for(old_string=0;str[old_string]!='\0';old_string++)
{
if(str[old_string] == ' '){/*这里应该用' ' 而不是" ",因为''表示的是char类型,"" 是表示字符串类型*/
blanknumber++;
}
}/*当old_string指向结束符时,for循环结束,所以在后续的指向中应该-1*/
new_string=old_string+blanknumber*2;
str[new_string]='\0';
new_string=new_string-1;
old_string=old_string-1;
while(old_string>=0 && old_string<new_string){
if(str[old_string] == ' '){
str[new_string--]='0';
str[new_string--]='2';
str[new_string--]='%';
}
else{
str[new_string--]=str[old_string];/*这里犯了一个错误就是忘了new_string中的--,当指向的元素
不是空格时,将旧字符串值赋给新的字符串,这时新的字符串指向位置应该前移,这里忘了前移导致没有过,
以后要多注意这些变化的细节地方*/
}
old_string--;
}
}
};