先翻转部分,后翻转整体。
左旋转字符串
http://www.nowcoder.com/questionTerminal/12d959b108cb42b1ab72cef4d36af5ec
先翻转部分,后翻转整体。注意上下界限。n-1
翻转过程:双指针。
/**
* 对于一个给定的字符序列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--;
}
}

