字符串旋转
问题描述:给定一个字符串,要示将字符串前面的若干个字符移动到字符串尾部。例如将字符串"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); } }
浙公网安备 33010602011771号