1 题目描述
来源:力扣(LeetCode)
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
2 解题思路
2.1 借助空字符串
初始化一个空的字符串 res 并遍历输入字符串的每个字符 i:
- 如果 i 不是空格,直接加到 res 上;
- 如果是空格,则将结果加 %201。
2.2 借助空list
初始化一个 list ,记为 res ;遍历列表 s 中的每个字符 c :
- 当 c 为空格时:向 res 后添加字符串 “%20”;
- 当 c 不为空格时:向 res 后添加字符 c ;
将列表 res 合并为字符串并返回2。
3 代码实现(Python3)
class Solution:
def replaceSpace(self, s: str) -> str:
#法1
res = ''
for i in s:
if i != ' ':
res += i
else:
res += '%20'
return res
#法2
res = []
for c in s:
if c == ' ':
res.append("%20")
else:
res.append(c)
return "".join(res)
4 复杂度分析
法1:借助空字符串
- 时间复杂度:O(N)。N为数组的长度,遍历了一遍数组。
- 空间复杂度:O(N)。使用了 res。
法2:借助list实现替换
- 时间复杂度 O(N): 遍历使用 O(N),每轮添加(修改)字符操作使用 O(1);
- 空间复杂度 O(N) :Python 新建的 list 使用了线性大小的额外空间。
深入了解复杂度:数据分析学习总结笔记11:空间复杂度和时间复杂度