题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

题目分析:要将空格替换成"%20",也就是说一个空格要补三个字符,所以每出现一个空格,字符串长度就会增加2。所以我们先遍历求出字符串中的空格数,然后计算出所有空格被替换完后字符串应有的长度,然后从后面开始复制。

代码如下

class Solution {
public:
void replaceSpace(char *str,int length) {
if(str == NULL || length == 0)//如果字符串空
return;
int space=0,i=0,newlength;
while(str[i]!='\0')
{
if(str[i] == ' ')
space++;
i++;
}
newlength = length + space*2;//所有空格被替换后字符串的长度
if(newlength < length)
return;
while(length >= 0 && newlength >= 0)
{
if(str[length] == ' ')
{
str[newlength--]='0';
str[newlength--]='2';
str[newlength--]='%';
}
else
{
str[newlength--]=str[length];
}
length--;
}
return;
}
};