Day3.1 剑指 Offer 05.替换空格

实现一个函数,把字符串 s 中的每个空格替换成”%20”
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”

解法1: python 内置函数

简单题我重拳出击 — 我直接我就内置函数 — (叉腰

  1. class Solution:
  2. def replaceSpace(self, s: str) -> str:
  3. s= s.replace(' ','%20')
  4. return s

执行用时:16 ms, 在所有 Python3 提交中击败了99.87%的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了50.55%的用户

当然肯定是不能这样哈。。。太狗了。。

解法2:join方法

  1. class Solution:
  2. def replaceSpace(self, s: str) -> str:
  3. # s= s.replace(' ','%20')
  4. # 迭代:
  5. str_list = s.split(' ')
  6. return '%20'.join(str_list)

执行用时:32 ms, 在所有 Python3 提交中击败了69.78%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了30.33%的用户

大牛解法:迭代

  1. class Solution:
  2. def replaceSpace(self, s: str) -> str:
  3. return ''.join(('%20' if c==' ' else c for c in s))

执行用时:24 ms, 在所有 Python3 提交中击败了96.47%的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了42.78%的用户

Day3.2 剑指 Offer 58 - II.左旋转字符串

就是向左循环位移

输入: s = “abcdefg”, k = 2
输出: “cdefgab”

方案1:使用切片

  1. class Solution:
  2. def reverseLeftWords(self, s: str, n: int) -> str:
  3. t = n % len(s)
  4. return s[t:] + s[:t]

执行用时:36 ms, 在所有 Python3 提交中击败了58.89%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了60.96%的用户

空间复杂度是 :n

有没有原地替换的方式呢 — 牺牲时间 — python的局限 字符串不能被修改

如果使用其他的例如 C —可以写一个位移一个元素的,然后位移N次即可