这一题如果按照题目意思来建立一个二维数组,一板一眼的放进去字符,就比较麻烦了,最后要返回的只是排列之后的从上到下的顺序。
所以在这里可以不必一板一眼的放在指定的位置rows[i][j],直接z形走位拼接,判断好方向以及行数即可。
9、11行代码的顺序千万不能调换,需要先判断是否在边界,然后再根据判断计算下一次的行数
var convert = function (s, numRows) {
if (numRows === 0 || numRows === 1) return s
let rows = new Array(numRows).fill('')
let directionFlag = false
let currentRow = 0
for (let i = 0; i < s.length; ++i) {
rows[currentRow] += s[i]
// 到达边界之后换向
if (currentRow === 0 || currentRow === numRows - 1) directionFlag = !directionFlag
// 计算行数
currentRow += directionFlag ? 1 : -1
}
return rows.join('')
};