先翻转部分,后翻转整体。注意上下界限。n-1
翻转过程:双指针。
图示如下。来源:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/solution/yuan-di-ju-bu-fan-zhuan-zheng-ti-fan-zhuan-xiang-j/
/**
* 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出
* @param str 字符序列S
* @param n 循环左移n位
* @return 移位后的结果
*/
public String LeftRotateString(String str,int n) {
if(str==null||str.length()==0){
return "";
}
int length=str.length();
char[] chars=str.toCharArray();
n%=length;
reverseString(chars,0,n-1);
reverseString(chars,n,length-1);
reverseString(chars,0,length-1);
return new String(chars);
}
public void reverseString(char[] chars,int start,int end ){
while (start<end){
char ch=chars[start];
chars[start]=chars[end];
chars[end]=ch;
start++;
end--;
}
}