先翻转部分,后翻转整体。
左旋转字符串
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--; } }