字符串旋转

问题描述:给定一个字符串,要示将字符串前面的若干个字符移动到字符串尾部。例如将字符串"abcdef"的前3个字符a,b,c移动到字符串的尾部,那个原字符串变为了"defabc"。

算法如下:

三步反转

1,将原来的字符串分为X和Y两个部分,其中X为'abc',Y为'def'。

2,将X的所有字符串反转,既'abc'得到'cba',再将Y的所有字符串也反转,既得到'fde'

3,最后将上述得到的结果再结与整体反转'cbafed'得到'defabc'。这样就实现了字符串反转。

 

package com.hello.Algorithm;

public class StringRotate {

    // 字符串旋转
    public static void main(String[] args) {
        String str = "abcdefghij";
        int m = 3;// 移三个

        char[] arry = str.toCharArray();
        m %= arry.length;
        
        change(arry, 0, m - 1);
        prinftCharArray(arry);
        change(arry, m, arry.length - 1);
        prinftCharArray(arry);
        change(arry, 0, arry.length - 1);
        prinftCharArray(arry);
        return;
    }

    private static void change(char[] array, int start, int end) {
        while (start < end) {
            char temp = array[start];
            array[start] = array[end];
            array[end] = temp;
            start++;
            end--;
        }
    }

    private static void prinftCharArray(char[] myarry) {
        System.out.println(myarry);
    }
}

 

posted on 2017-07-05 14:42  寂寞的蚂蚁  阅读(104)  评论(0)    收藏  举报

导航