编程珠玑第二章旋转字符串,abcdefg向左旋转3位,变为defgabc,书中的思想是分三步,实现字符串的旋转
实现代码如下
package org.waitingfortime.编程珠玑.c2; /** * Created by IntelliJ IDEA. * User: mazhiyuan * Date: 12-10-25 * Time: 下午6:39 * 编程珠玑第二章,向左旋转字符串 */ public class ReverseString { public static char[] reverse(char[] chars, int i) { if (i <= 0) throw new IllegalArgumentException("i must be greater than 0"); i = i % chars.length; //first step _reverse(chars, 0, i - 1); //second step _reverse(chars, i, chars.length - 1); //third step _reverse(chars, 0, chars.length - 1); return chars; } private static void _reverse(char[] chars, int b, int e) { while (b <= e) { swap(chars, b, e); b++; e--; } } private static void swap(char[] chars, int b, int e) { char temp = chars[b]; chars[b] = chars[e]; chars[e] = temp; } public static void main(String[] args) { char c[]={'a','b','c','d','e','f','g','h','i'}; System.out.println(java.util.Arrays.toString(ReverseString.reverse(c,5))); } }
结果输出为
[f, g, h, i, a, b, c, d, e]
看到结果后我发现这个其实就是将前n个字符截取后拼接到后面么,干嘛还要分三步呢。。。
难道是我没理解旋转的含义么