题目

URL化。编写一种方法,将字符串中的空格全部替换为%20。
假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。
image.png

思路

使用额外的空间保存原始的字符ch和替换后的字符。

  1. class Solution:
  2. def replaceSpaces(self, S: str, length: int) -> str:
  3. ans = []
  4. replace = '%20'
  5. for i in range(length):
  6. if S[i] == ' ':
  7. ans.append(replace)
  8. else:
  9. ans.append(S[i])
  10. return ''.join(ch for ch in ans)

由于python字符串属于不可变类型,直接双指针也就行不通,这里给出思路代码,跑不通。

  1. class Solution:
  2. def replaceSpaces(self, S: str, length: int) -> str:
  3. # 双指针,从后往前遍历
  4. replace_char = '%20'
  5. end = length - 1
  6. cur = len(S) - 1
  7. for ch in S[::-1]:
  8. if ch == ' ':
  9. S[end] = replace_char
  10. else:
  11. S[end] = ch
  12. end -= 1
  13. return S

更便捷高效的做法直接使用字符串API —— str.replcae()

  1. class Solution:
  2. def replaceSpaces(self, S: str, length: int) -> str:
  3. return S[:length].replace(' ','%20')