[力扣] 剑指 Offer 第三天 - 替换空格
- 题目来源
- 题目描述
- 示例
- 题目分析
- 算法
- 代码实现
- 执行结果
- 复杂度分析
- 总结
耐心和持久胜过激烈和狂热。
题目来源
来源:力扣(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()
}
执行结果
复杂度分析
时间复杂度:O(N),其中 N 为字符串的长度,遍历字符串需要 O(N)
空间复杂度:O(N),其中 N 为字符串的长度,strings.Builder
需要额外的线性空间,它的底层实现是 []byte
总结
如果本文对你有帮助,欢迎点赞收藏加关注,如果本文有错误的地方,欢迎指正!