`
mazhiyuan
  • 浏览: 62648 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第二章 旋转字符串的思考

阅读更多

编程珠玑第二章旋转字符串,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个字符截取后拼接到后面么,干嘛还要分三步呢。。。

 难道是我没理解旋转的含义么

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics