剑指 Offer 58 - II. 左旋转字符串 1.题目 2.我的解决方案 最早想出来的办法 class Solution: def reverseLeftWords(self, s: str, n: int) -> str: for i in range(n): ch = s[0] s = s[1:] s += ch return s 时间复杂度: O ( n ) O(n) O(n)空间复杂度: O ( 1 ) O(1) O(1) 第二种办法 class Solution: def reverseLeftWords(self, s: str, n: int) -> str: s1 = s[n:] s2 = s[0:n] return s1 + s2 3.拓展:不许使用切片时 使用列表 class Solution: def reverseLeftWords(self, s: str, n: int) -> str: ls = list(s) for i in range(n): ls.append(ls.pop(0)) return "".join(ls) 时间复杂度: O ( n ) O(n) O(n)空间复杂度: O ( 1 ) O(1) O(1) 使用取余操作 class Solution: def reverseLeftWords(self, s: str, n: int) -> str: # 使用取余操作:在最后将索引变回到最前 res = "" for i in range(n, n+len(s)): res += s[i%len(s)] return res 时间复杂度: O ( n ) O(n) O(n)空间复杂度: O ( 1 ) O(1) O(1)