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

    xiaoxiao2025-11-20  9

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

    转载请注明原文地址: https://ju.6miu.com/read-1304383.html
    最新回复(0)