时间限制:1秒 空间限制:32768K 热度指数:784432
本题知识点: 字符串
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {
int olen=0; //源字符串长度
int slen=0; //空格个数
for(int i=0;i!='/0';i++)
{
++olen;
if(str[i]==' ')
++slen;
}
if(olen+slen*2>length||slen==0) //不能替换,越界
return; //或者无空格
int nlen=olen; //当前字符串长度
for(int i=olen-1;i>=0;i--)
{
if(str[i]==' ')
{
for(int j=nlen-1;j>=i+1;j--)
{//遇到空格时,空格后面的每个字符向后
//移动两个位置,此时包括原来的位置,
//共有3个空位,可容纳%20
str[j+2]=str[j];
}
str[i]='%';
str[i+1]='2';
str[i+2]='0';
nlen=nlen+2; //更改当前nlen长度
}
}
}
};