美文网首页
【leetcode C语言实现】剑指 Offer 05.替换空格

【leetcode C语言实现】剑指 Offer 05.替换空格

作者: sunshine_hanxx | 来源:发表于2020-06-30 22:40 被阅读0次

    题目描述

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

    示例 1:

    输入:s = "We are happy."
    输出:"We%20are%20happy."

    限制:

    0 <= s 的长度 <= 10000

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof

    解题思路

    由于遍历字符串之前并不知道字符串有多少个空格,因此通过空间换取时间方式,定义一个大小为3倍大小的内存空间,遍历原字符串,若遍历到的字符为非空格,则直接复制到新的字符数组,若遍历到的字符为空格,则用'%20'三个字符替换,注意替换的时候需要向后移动三个字符大小。

    代码

    char * replaceSpace(char * s)
    {
        char *new_s = calloc(strlen(s) * 3 + 1, sizeof(char));
        int i = 0, k = 0;
    
        while(s[i] != '\0')
        {
            if(s[i] == ' ')
            {
                new_s[k++] = '%';
                new_s[k++] = '2';
                new_s[k++] = '0';
            }
            else
            {
                new_s[k++] = s[i];
            }
            i++;
        }
        return new_s;
    }
    

    执行结果

    时间复杂度:O(N),空间复杂度:O(N)


    相关文章

      网友评论

          本文标题:【leetcode C语言实现】剑指 Offer 05.替换空格

          本文链接:https://www.haomeiwen.com/subject/ssofqktx.html