代码重构:leetcode 6. Z 字形变换

102 阅读1分钟

6. Z 字形变换

就简单模拟。

使用cur记录当前数组所在位置,然后如果是向下递增,则每次cur++,若是到底,则反向。同理,当向上时候,就cur--,若是到顶,则反向。

有趣的点是代码重构时候如何简化代码,同时提高可读性。

    public String convert(String s, int numRows) {
        if (numRows == 1) return s;
        StringBuilder[] builders = new StringBuilder[numRows];
        for (int i = 0; i < builders.length; i++) builders[i] = new StringBuilder();
        boolean down = false;
        int cur = 0;
        for (int i = 0; i < s.length(); i++) {
            builders[cur].append(s.charAt(i));
            if (i == 0 || i == numRows - 1) down = !down;
            cur += down ? 1 : -1;
        }
        StringBuilder builder = new StringBuilder();
        for (StringBuilder i : builders) builder.append(i);
        return builder.toString();
    }