问题:
package com.nxz.blog.otherTest; import java.util.ArrayList; import java.util.List; public class Test6ZigzagConversion { /** * z字形变换 将一个字符串按照z字形输出 * 源字符串: LEETCODEISHIRING * 输出: LCIRETOESIIGEDHN * L C I R * E T O E S I I G * E D H N * <p> * 定义numrows个对象分别存储numrows行中的字符,定义一个移动方向,向下和向上 * 循环将原字符串中的字符添加的numrows个对象中, * 最后输出 */ private List<StringBuffer> arr = new ArrayList<>(); public String convert(String s, int numRows) { // 初始化三个stringbuffer对象,用来保存每一行中的字符 for (int i = 0; i < numRows; i++) { arr.add(new StringBuffer()); } // 定义一个变量,用来控制行+1 还是行-1 boolean down = false; // 当前行 int curLine = 0; for (char c : s.toCharArray()) { arr.get(curLine).append(c); //每当是第一行会最后一行是,控制行是增还是减(也就是控制down是true还是false) if (curLine == 0 || curLine == numRows - 1) { down = !down; } curLine += down ? 1 : -1; } String res = ""; for (int i = 0; i < arr.size(); i++) { res += arr.get(i).toString(); } return res; } public static void main(String[] args) { Test6ZigzagConversion t = new Test6ZigzagConversion(); String leetcodeishiring = t.convert("LEETCODEISHIRING", 3); System.out.println(leetcodeishiring); } }