LeetCode 剑指 Offer 05. 替换空格

题目描述

剑指 Offer 05. 替换空格

给定一个字符串,逐个替换字符串中的空格为 %20。请注意,返回的字符串应该是一个新的字符串,原字符串不变。

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

示例 2: 输入:s = " Hello World! " 输出:"Hello%20World!"

提示:

  • 0 <= s.length <= 10000

image-20241107204051393

思路分析

解法一:字符遍历(推荐)

核心思路

  • 遍历字符串,遇到空格追加 “%20”。
  • 使用 StringBuilder / bytes.Buffer 构建结果,避免频繁拼接。
  • 最终返回构建后的字符串。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示字符串长度。
  • 空间复杂度:O(n),用于结果构建。
class Solution {
    public String replaceSpace(String s) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == ' ') {
                builder.append("%20");
            } else {
                builder.append(c);
            }
        }
        return builder.toString();
    }
}
import "strings"

func replaceSpace(s string) string {
	var builder strings.Builder
	builder.Grow(len(s))

	for i := 0; i < len(s); i++ {
		if s[i] == ' ' {
			builder.WriteString("%20")
		} else {
			builder.WriteByte(s[i])
		}
	}

	return builder.String()
}

相似题目

题目 难度 考察点
151. 反转字符串里的单词 中等 字符串
344. 反转字符串 简单 字符串
541. 反转字符串 II 简单 字符串
557. 反转字符串中的单词 III 简单 字符串
58. 最后一个单词的长度 简单 字符串
本文作者:
本文链接: https://hgnulb.github.io/blog/2021/86567750
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!