面试题5:替换空格

请实现一个函数,把字符串中的每个空格替换成"%20"。

解析:
从后往前替换。首先计算出需要的容量,然后从最后一位开始从后往前填写内容。


答案:

//时间复杂度为 O(n)
//length为字符数组str的总容量,大于或等于字符串str的实际长度
void ReplaceBlank(char str[], int length)
{
    if (nullptr==str || length<=0) return;

    int size = 0, blank_cnt = 0;
    for (int i=0; i<=length && str[i]!='\0'; ++i)
    {
        ++size;
        if (str[i]==' ') ++blank_cnt;
    }
    int new_size = size + 2*blank_cnt;
    if (new_size>length) return;

    int ind_new=new_size-1, ind_old=size-1;
    while (ind_new>=0 && ind_old>=0)
    {
        if (str[ind_old]!=' ')
            str[ind_new--] = str[ind_old--];
        else
        {
            --ind_old;
            str[ind_new--] = '0';
            str[ind_new--] = '2';
            str[ind_new--] = '%';
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目05:替换空格 请实现一个函数,把字符串中的每个空格替换成"%20" 原因:在网络编程中,如果URL参数中含有...
    stoneyang94阅读 353评论 0 0
  • 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后...
    闭门造折阅读 596评论 0 0
  • 题目描述:请实现一个函数,把字符串中的每个空格替换成"%20"。 样例输入:"We are happy."样例输出...
    DDB_CS阅读 345评论 0 0
  • 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字...
    lvlvforever阅读 178评论 0 0
  • 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替...
    哦漏昵称已被占用阅读 333评论 0 0