问题:
难度easy
说明:
输入会给一个string以及一个shift数组,shift是一个int[][]二维数组,当int[0] = 0时候往左移动,int[0] = 1往右移动。int[1]则是给出移动多少的位置,而且数组是想象成头尾相连的。
输入输出案例:
Input: s = "abcdefg", shift = [[1,1],[1,1],[0,2],[1,3]]
Output: "efgabcd"
Explanation:
// 数组往右移动一位,数组最右的字符移到数组头部,就像是数组头尾相连一样,其他移动也是相通概念
[1,1] means shift to right by 1. "abcdefg" -> "gabcdef"
[1,1] means shift to right by 1. "gabcdef" -> "fgabcde"
[0,2] means shift to left by 2. "fgabcde" -> "abcdefg"
[1,3] means shift to right by 3. "abcdefg" -> "efgabcd"
我的代码:
思路是用一个指向string头部指针,然后移动这个指针就行,最后复制和创建一个新的string返回即可,100%RT&M。
不过考虑到数组是头尾相连的概念,头指针移动算法应该是求模。
左移动:head = (head + len - shift[1]) % len;
右移动:head = (head &#