替换空格

来源:互联网 发布:php固定资产管理系统 编辑:程序博客网 时间:2024/05/25 01:36

题目描述

请实现一个函数,将一个字符串中的空格替换成“%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;    }


0 0