解题思路:
在Python和Java等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符数组来实现。
如果是用Java或c语言实习,则需要在最开始建立字符数组,该字符数组地长度为原来字符串s的长度的3倍,这样可以保证字符数组能容纳所有替换后的字符。
由于Python语言的特殊性,不需要考虑去设定字符数组的长度问题。
伪代码:
-
初始化一个list,记为res,用来存放新建的字符串
-
循环遍历列表s中的每个字符c:
-
当c为空格时,向res后添加字符串'%20'
-
当c不为空格时,向res后添加字符c
-
-
将列表res转化为字符串并返回
代码:
class Solution:
def replaceSpace(self, s):
"""
:param s: str
:return: str
"""
res = []
for c in s:
if c == ' ':
res.append('%20')
else:
res.append(c)
return "".join(res)
复杂度分析:
-
时间复杂度O(N):遍历使用O(N),每轮添加(修改)字符操作使用O(1);
-
空间复杂度O(N):Python建立新的list和Java新建字符数组都使用了线性大小的额外空间