现在有一个长度为n的字符串,进行循环右移k位的操作,少对这个字符串进行几次区间反转操作能实现循环右移k位呢。反转操作指字符串某一区间内的字符反转,例如“123456”,区间[3,5]进行反转字符串变为“125436”。假设字符串每一位都不同。给定一个字符串长度n和循环右移次数k,求最少反转次数。
3,4
2
例如字符串为123 那么循环右移4次变为312,用区间反转操作代替的话,就是先对[1,3]反转得到321,再对[2,3]反转得到312,最少进行两次反转操作
class Solution: def solve(self, n, k): k = k % n if k == 0: return 0 elif k == 1 or k == 2 or k == n-1 or k == n-2: if n == 2: return 1 return 2 else: return 3