本文共 1454 字,大约阅读时间需要 4 分钟。
class Solution1: def reverseLeftWords(self, s, n): return s[n:] + s[:n]
class Solution: def reverseLeftWords(self, s, n): res = [] for i in range(n,len(s)): res.append(s[i]) for i in range(n): res.append(s[i]) return ''.join(res)'''作者:jyd链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/solution/mian-shi-ti-58-ii-zuo-xuan-zhuan-zi-fu-chuan-qie-p/来源:力扣(LeetCode)'''
反转法一:
反转法二:
法一 法二的前后是不一样的
,拿具体数字试一下,形象一点
class Solution: def reverseLeftWords(self, s, n): if n > len(s) or not s: return '' s = list(s) def reverse(start, end): while start < end: s[start], s[end] = s[end], s[start] start += 1 end -= 1 length = len(s) - 1 # 法一 # reverse(0, n-1) # reverse(n,length) # reverse(0, length) # 法二 reverse(0, length) reverse(0, length-n) reverse(length-n+1, length) return ''.join(s)
s=[abcdefg] k=2反转法一:s[:2]=ab 前反转: bas[3:]=cdefg 后反转: gfedcs[:]=ba gfedc 整体反转: cdefg ba反转法二:s[:]=abcdefg 整体反转: gfedcbas[:7-1-2]=gfedc 前反转: cdefgs[7-2:7-1]=ba 后反转: ab
下面三个依次是三个思路的实现效果
思路一的方法竟然是最快的~转载地址:http://cfjii.baihongyu.com/