题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL || length<0 )
return ;
int oldnumber=0;
int newnumber=0;
int i=0;
while(str[i]!='\0')
{
if(str[i]==' ')
newnumber++;
i++;
oldnumber++;
}
int oldlength=oldnumber;
int newlength=oldlength+ newnumber*2;
if(newlength>length)
return ;
while(newlength>=0 && newlength>oldlength)
{
//注意这里是oldlength而不是oldlength-1是因为字符串后还有'\0'
if(str[oldlength]==' ')
{
str[newlength--]='0';
str[newlength--]='2';
str[newlength--]='%';
}
else
{
str[newlength--]=str[oldlength];
}
oldlength--;
}
}
};