两步翻转法
public class Solution {
/**
* @param str: an array of char
* @param offset: an integer
* @return: nothing
*/
public char[] rotateString(char[] A, int offset) {
if (A == null || A.length == 0) return A;
offset = offset % (A.length);
reverse(A, 0, A.length - offset - 1);
reverse(A, A.length - offset, A.length - 1);
reverse(A, 0, A.length - 1);
return A;
}
public void reverse(char[] A, int start, int end) {
for (int i = start, j = end; i < j; i++, j--) {
char temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
}