6. Z 字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 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 }

 

上一篇:织梦CMS/Dedecms添加自定义函数


下一篇:leetcode6 Z字形变换 python