Z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING"
行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
示例:
输入: s = “LEETCODEISHIRING”, numRows = 4
输出: “LDREOEIIECIHNTSG”
解释:
L D R
E O E I I
E C I H N
T S G
思路:
-
以一个V字形为一个循环,每次循环的次数为n=(2*numRows - 2)
-
有s中每个字符在循环中的位置是x=i % n
-
所属行号为y=min(x,n-x)
-
以上图为例,有如下规则:
-
根据规律可拼接出每一行的的字符串,最后合并所有行即可。
代码:
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
if(numRows == 1){
return s
}
const rows = new Array(numRows).