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

    技术2022-07-10  143

    题目描述

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

    示例 1:

    输入:s = “We are happy.” 输出:“We are happy.”

    限制:

    0 <= s 的长度 <= 10000

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

    解题思路

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

    代码

    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)

    Processed: 0.012, SQL: 9