[力扣] 剑指 Offer 第三天 - 替换空格

时间:2022-11-17 18:58:39

耐心和持久胜过激烈和*。

题目来源

来源:力扣(LeetCode)

链接:​​https://leetcode.cn/problems/ti-huan-kong-ge-lcof​

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

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

示例

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

题目分析

本文使用 Go 语言去实现算法,由于 Go 语言是 string 类型是不可变的,因此需要创建一个新的字符串,这里使用 ​​strings.Builder​​ 去动态创建字符串。

算法

  • 定义 ​​ret​​ 变量 → ​​var ret strings.Builder​
  • 遍历字符串,判断字符是否为空格,条件成立则往 ​​ret​​ 对象里写入字符串 ​​20%​​,否则写入原字符
  • 将 ​​ret​​ 转化为字符串并返回

代码实现

func replaceSpace(s string) string {
var ret strings.Builder
for i, _ := range s {
if s[i] == ' ' {
ret.WriteString("%20")
} else {
ret.WriteByte(s[i])
}
}
return ret.String()
}

执行结果

[力扣] 剑指 Offer 第三天 - 替换空格

复杂度分析

时间复杂度:O(N),其中 N 为字符串的长度,遍历字符串需要 O(N)

空间复杂度:O(N),其中 N 为字符串的长度,​​strings.Builder​​​ 需要额外的线性空间,它的底层实现是 ​​[]byte​

总结

如果本文对你有帮助,欢迎点赞收藏加关注,如果本文有错误的地方,欢迎指正!