Day3.1 剑指 Offer 05.替换空格
实现一个函数,把字符串 s 中的每个空格替换成”%20”
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
解法1: python 内置函数
简单题我重拳出击 — 我直接我就内置函数 — (叉腰
class Solution:
def replaceSpace(self, s: str) -> str:
s= s.replace(' ','%20')
return s
执行用时:16 ms, 在所有 Python3 提交中击败了99.87%的用户
内存消耗:14.9 MB, 在所有 Python3 提交中击败了50.55%的用户
当然肯定是不能这样哈。。。太狗了。。
解法2:join方法
class Solution:
def replaceSpace(self, s: str) -> str:
# s= s.replace(' ','%20')
# 迭代:
str_list = s.split(' ')
return '%20'.join(str_list)
执行用时:32 ms, 在所有 Python3 提交中击败了69.78%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了30.33%的用户
大牛解法:迭代
class Solution:
def replaceSpace(self, s: str) -> str:
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:使用切片
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
t = n % len(s)
return s[t:] + s[:t]
执行用时:36 ms, 在所有 Python3 提交中击败了58.89%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了60.96%的用户
空间复杂度是 :n
有没有原地替换的方式呢 — 牺牲时间 — python的局限 字符串不能被修改
如果使用其他的例如 C —可以写一个位移一个元素的,然后位移N次即可