题目大意
给出一个字符串sss,并且首尾相连,即n+1−>1n+1 -> 1n+1−>1 , 现在要求将字符串当中的字符aia_iai 集体向后移动mmm位,求解位移后的字符串。
解题思路
我们设定字符串sss的长度为nnn,假若m>nm > nm>n的情况下,实际上每位aia_iai 位移的格子相当于m%nm \% nm%n 格,例:
* abcde 右移1格为 eabcd
* abcde 右移6格为 eabcd
不难发现,在字符串长度为n=5n = 5n=5的情况下右移1格与右移6格的结果相等,那么我们就可以得等价关系 $ m = m % n$。
进一步换算,假若字符串下标从0开始进行计算,那么转移后第iii位的位置与原来字符串的位置表达式可以写为i=(n−m+i)%mi = (n - m + i) \% mi=(n−m+i)%m
时间复杂度分析
O(n)O(n)O(n)
演示代码