题目描述
请实现一个函数,将一个字符串中的空格替换成“%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 numbers=0;
int newnumber=0;
int i=0;
int j=0;
int oldlength;
int newlength;
while(str[i]!='\0')
{
oldnumber++;
if(str[i]==' ')
{
numbers++;
}
i++;
}
newnumber=oldnumber+numbers*2;
if(newnumber>length)
return ;
oldlength=oldnumber;
newlength=newnumber;
while(oldlength>=0&&oldlength<newlength)
{
if(str[oldlength]==' ')
{
str[newlength--]='0';
str[newlength--]='2';
str[newlength--]='%';
}
else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置
{
str[newlength--]=str[oldlength];
}
oldlength--;
}
}
};