小于 1 分钟
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
// 修复:如果行数为1,直接返回原字符串,避免后续索引越界
if (numRows === 1) return s;
// 优化:直接初始化字符串数组,省去最后的 flat 操作
const rows = new Array(numRows).fill("");
let curRow = 0;
// 优化:变量名改为 goingDown,语义更清晰
let goingDown = false;
for (let i = 0; i < s.length; i++) {
const char = s[i];
rows[curRow] += char; // 直接拼接字符串
// 在到达顶部或底部时改变方向
if (curRow === 0 || curRow === numRows - 1) {
goingDown = !goingDown;
}
// 根据方向更新行号
curRow += goingDown ? 1 : -1;
}
// 直接拼接所有行
return rows.join('');
};