否则整个字符串需要经历,向下向右,向下向右,这样的反复循环过程,设定 down 变量表示是否向下,loc 变量表示当前字符串数组的下标 如果 down 为 true,则 loc+=1,字符串数组下标向后移动,将当前字符加入当前字符串中
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const convert = function (s, numRows) { // 如果numRows == 1则表示z行变换时,全在一行,返回的数据就是s // 如果numRows > s.length,则s的数据正好放一列,返回的数据也是s if (numRows == 1 || numRows > s.length) return s
const rows = newArray(numRows).fill('') let loc = 0 let down = false
for (const c of s) { rows[loc] = rows[loc] + c if (loc == 0 || loc == numRows - 1) down = !down loc = down ? loc + 1 : loc - 1 } return rows.join('') }
利用 Array.from 创建空数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const convert = function (s, numRows) { // 如果numRows == 1则表示z行变换时,全在一行,返回的数据就是s // 如果numRows > s.length,则s的数据正好放一列,返回的数据也是s if (numRows == 1 || numRows > s.length) return s
const rows = Array.from({ length: numRows }, (v) => (v = '')) let loc = 0 let down = false
for (const c of s) { rows[loc] = rows[loc] + c if (loc == 0 || loc == numRows - 1) down = !down loc = down ? loc + 1 : loc - 1 } return rows.join('') }