跳至主要內容

Mr.He小于 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('');
};