给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例
对于字符串 “abcdefg”.
offset=0 => “abcdefg”
offset=1 => “gabcdef”
offset=2 => “fgabcde”
offset=3 => “efgabcd”
挑战
在数组上原地旋转,使用O(1)的额外空间
public class Solution {
/*
* param A: A string
* param offset: Rotate string with offset.
* return: Rotated string.
*/
public char[] rotateString(char[] A, int offset) {
if(null == A || A.length == 0) return A;
offset = offset % A.length;
for(int i = 0; i < A.length/2; i++) {//整个字符串翻转
char c = A[i];
A[i] = A[A.length - 1 - i];
A[A.length - 1 - i] = c;
}
for(int i = 0; i < offset/2; i++) {//offset部分翻转
char c = A[i];
A[i] = A[offset - 1 - i];
A[offset - 1 - i] = c;
}
for(int i = 0; i < (A.length - offset + 1)/2; i++) {//剩余部分翻转
char c = A[offset + i];
A[offset + i] = A[A.length - 1 - i];
A[A.length - 1 - i] = c;
}
return A;
}
};