目录

26、剑指 Offer 05. 替换空格

一、题目

剑指 Offer 05. 替换空格 难度简单

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

二、解法

2.1、遍历添加

核心思路

在 Python 和 Java 等语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。

复杂度分析

时间复杂度:O(N)。遍历使用 O(N),每轮添加(修改)字符操作使用 O(1);

空间复杂度:O(N)。新建的 StringBuilder 使用了线性大小的额外空间。

Code

class Solution {
    public String replaceSpace(String s) {
        StringBuilder result = new StringBuilder();

        for (Character c : s.toCharArray()) {
            if (c == ' ') {
                result.append("%20");
            } else {
                result.append(c);
            }
        }

        return result.toString();
    }
}

2.2、String 内置 replace 函数

核心思路

不说了,懂得都懂。

复杂度分析

时间复杂度

空间复杂度

Code

class Solution {
    public String replaceSpace(String s) {
        return s.replace(" ", "%20");
    }
}

REF

https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/solution/mian-shi-ti-05-ti-huan-kong-ge-ji-jian-qing-xi-tu-/