【剑指Offer第二题】替换空格

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

创新互联服务电话:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联网页制作领域十年,包括三维植被网等多个领域拥有丰富的网站设计经验,选择创新互联,为企业锦上添花!

*注:设给定字符串长度为n。语言:C++


解法1:正向遍历,遇到空格即进行替换,并将其后的元素相应后移。

void replaceSpace(char *str,int length) {
        if(length <= 0)
            return;
        char rep[] = "%20";
        char *out;
        int cnt = 0;
        for(int i = 0; i < length; ++i)
        {
            if(str[i] == ' ')
            {
                for(int j = length+1; j > i; --j)
                    str[j] = str[j-2];
                length += 2;
                strncpy(str+i, rep, 3);
            }
        }
    }

时间复杂度:O(n^2),空间复杂度:O(1)


解法2:正向遍历计算空格数,再反向遍历进行空格替换。

void replaceSpace(char *str,int length) {
        if(length <= 0)
            return;
        int cnt = 0;
        for(int i = 0; i < length; ++i)
        {
            if(str[i] == ' ')
                cnt += 2;
        }
        for(int i = length - 1; i >= 0; --i)
        {
            if(str[i] != ' ')
                str[i + cnt] = str[i];
            else
            {
                cnt -= 2;
                str[i + cnt] = '%';
                str[i + cnt + 1] = '2';
                str[i + cnt + 2] = '0';
            }
        }
    }

时间复杂度:O(n),空间复杂度:O(1)


当前标题:【剑指Offer第二题】替换空格
分享路径:http://bzwzjz.com/article/jhsecj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 达州网站设计 成都模版网站建设 网站建设方案 营销型网站建设 重庆网站制作 成都网站制作 企业网站设计 成都网站设计 重庆外贸网站建设 网站设计 成都网站建设公司 企业网站建设 成都网站建设 外贸网站设计方案 成都网站设计 营销型网站建设 移动网站建设 营销型网站建设 成都网站设计 响应式网站设计 泸州网站建设