剑指offer----左旋转字符串----java实现
对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。
思路:
(1)借助于单词翻转的顺序地思路,把字符串的部分左移,可以把字符串看成两部分,要左移的n位分为一部分,剩下的分为一部分
1)先翻转第一部分
2)翻转第二部分
3)整体翻转
当字符串的场地小于等于要左旋的位数时,不需要旋转了;
public String LeftRotateString(String str,int n) { if(str == null || str.length()<2 ||str.length()<=n) { return str; } char[] charArray = str.toCharArray(); //翻转前n个 reverse(charArray,0,n-1); //翻转后面的 reverse(charArray,n,charArray.length-1); //整体翻转 reverse(charArray,0,charArray.length-1); return String.valueOf(charArray); } private void reverse(char[] array,int start,int end) { char temp = " "; while(start < end) { temp = array[start]; array[start++] = array[end]; array[end--] = temp; } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 旋转字符串
- 下一篇: 字符串旋转 不同解法