剑指offer----左旋转字符串----java实现

来源:互联网 发布:甲醛检测仪推荐 知乎 编辑:程序博客网 时间:2024/06/06 08:51

对于一个给定的字符序列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;}}


0 0
原创粉丝点击