您的位置:首页 > 其它

替换空格

2017-01-13 01:52 162 查看


题目描述

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

解法1:

从头到尾遍历字符串,每次遍历到空格的时候,将空格替换为目标字符串,时间复杂度为O(n^2)

解法2:

从头到尾遍历字符串,如果遇到空格,则对应位置复制目标字符串

解法3:

首先遍历字符串中空格的个数,然后从后向前遍历,将字符直接移动到最终的位置,时间复杂度为O(n^2)

代码如下:

void replaceSpace(char *str,int length) {//未考虑修改后的字符串长度超过预期长度,这个length在书上指的是最大容量,面试的时候要问
if(length<1)
{
return;
}
int numofspace=0;
for(int i=0;i<length;++i)
{
if(str[i]==' ')
{
++numofspace;
}
}
int newlen=length+numofspace*2;//计算出新长度
int i=length-1,j=newlen-1;//从后往前拷贝,防止覆盖,也避免重复移动
while(i>-1&&j>i)//新增加j>i这一个条件,当j=i的时候说明已经没有空格了,不需要继续替换!
{
if(str[i]!=' ')
{
str[j--]=str[i--];
}
else
{
str[j--]='0';
str[j--]='2';
str[j--]='%';
--i;
}
}
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: