将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列
输入: s = "LEETCODEISHIRING", numRows = 4 输出: "LDREOEIIECIHNTSG" 解释: L D R E O E I I E C I H N T S G
1 public class ZigZagConversion { 2 //按照行顺序依次读取,读完第一行,然后第二行,直至第numRows行,每一个位置的元素可以根据行号确定在字符串中序号 3 public String convert(String s, int numRows) { 4 if(numRows == 1) { 5 return s; 6 } 7 int len = s.length(); 8 int index = 2 * numRows - 2; 9 StringBuilder sb = new StringBuilder(); 10 for(int i=0; i<numRows; i++) { 11 for(int j=0; j+i<len; j += index) { 12 sb.append(s.charAt(j+i)); //j+i,对于所的行,任意的满列(代表Z字形的横)之间元素序号满足该关系式 13 if(i!=0 && i!=(numRows-1) && 14 (j+index-i)<len) { //j+index-i,对于非首尾行,还包含非满列(代表Z字形的斜杠)元素,元素序号满足该关系式 15 sb.append(s.charAt(j+index-i)); 16 } 17 } 18 } 19 return sb.toString(); 20 } 21 }