LeetCode 剑指 Offer 05. 替换空格
题目描述
给定一个字符串,逐个替换字符串中的空格为
%20。请注意,返回的字符串应该是一个新的字符串,原字符串不变。示例 1: 输入:
s = "We are happy."输出:"We%20are%20happy."示例 2: 输入:
s = " Hello World! "输出:"Hello%20World!"提示:
- 0 <= s.length <= 10000

思路分析
解法一:字符遍历(推荐)
核心思路:
- 遍历字符串,遇到空格追加 “%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. 最后一个单词的长度 | 简单 | 字符串 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!