题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
题解
在 Python 和 Java 等语言中,字符串都被设计成不可变的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。
思路一
replace函数
思路二
创建新字符串,遍历输入字符串,遇到空格在新字符串后加‘%20’。
但由于Python中str是不可变类型,每加一位会生成新的字符串,浪费内存。
class Solution:
def replaceSpace(self, s: str) -> str:
r = '' # 创建一个空str
for i in s:
if i == ' ': # 判断遍历到的字符是否为空格
r += '%20' # 遇到s中为空格,替换为%20
else:
r += i
return r

思路三(最佳)
class Solution:
def replaceSpace(self, s: str) -> str:
r = [] # 创建一个空list
for i in s:
if i == ' ': # 判断遍历到的字符是否为空格
r.append('%20') # 遇到s中为空格,替换为%20
else:
r.append(i)
return ''.join(r) # 将列表中的元素连接成字符串
时间复杂度 O(N): 遍历使用 O(N) ,每轮添加(修改)字符操作使用 O(1); 空间复杂度 O(N) : Python 新建的 list 和 Java 新建的 StringBuilder 都使用了线性大小的额外空间。

简化代码
class Solution:
def replaceSpace(self, s: str) -> str:
return ''.join(('%20' if i ==' ' else i for i in s))

本文介绍了一种在Python中将字符串中的空格替换为%20的算法实现,提供了三种不同的解决方案,包括使用replace函数、创建新字符串进行遍历替换以及使用列表进行高效替换的方法。
1662

被折叠的 条评论
为什么被折叠?



