请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
//length是指str的总空间,并不是str的实际长度
void replaceSpace(char *str,int length) {
int num = 0;
int orilength=0;
int i=0;
while(str[i]!='\0')
{
orilength++;
if(str[i]==' ')
{
num++;
}
i++;
}
int newlength = orilength + 2 * num;
if(newlength > length)
return;
//反向复制,精髓所在
while(orilength>=0 && newlength>orilength)
{
if(str[orilength] == ' ')
{
str[newlength--] = '0';
str[newlength--] = '2';
str[newlength--] = '%';
}
else
{
str[newlength--] = str[orilength];
}
orilength--;
}
}
};