剑指Offer 5:替换空格
题目
给定字符串,将字符串中每个空格替换成“%20”。
例:“We are happy”
–> “We%20are%20happy”
解答
###双指针解法
- 将原字符串长度扩充,增加 空格数*2 的空间。
- i 指针指向原字符串尾,j 指针指向新字符串尾。
- 如果字符串i的位置不为空格,j原样照搬;如果是空格,则把j相关部分换成“%20”
class Solution:
def replaceSpace(self, s: str) -> str:
#s中空格的数量
counter = s.count(" ")
#把string用list形式表示出来,用iterable的思路处理这道题
res = list(s)
#每遇到一个“ ”就在末尾加上双倍空格“ ”
res.extend([" "] * counter * 2)
i = len(s) - 1
j = len(res) - 1
while i >= 0:
if res[i] != " ":
res[j] = res[i]
i -= 1
j -= 1
else:
res[j-2 : j+1] = "%20"
j -= 3
i -= 1
return ''.join(res)
收获
- python不可以对string进行修改,因此这里把string转化成List,再把List转化成string。
- ‘TEST’.join(iterable):把所欲哦iterable里的元素汇在一个string里面,并且用‘TEST’分格相邻的元素。