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

题目描述

请实现一个函数,把字符串 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.替换空格)