SOURCE

//  思路:
//  对于n行的, s中的第i个字符:

// 对余数进行判断

// i%(2n-2) == 0 ----> row0

// i%(2n-2) == 1 & 2n-2-1 ----> row1

// i%(2n-2) == 2 & 2n-2-2 ----> row2

// ...

// i%(2n-2) == n-1 ----> row(n-1)

// ==>

// 对 k = i%(2n-2)进行判断

// k<=n-1时候,s[i]就属于第k行
// k>n-1时候,s[i]就属于2n-2-k行
// 最后将rows拼接起来就行了

s = "A", numRows = 1
// 输出:"PAHNAPLSIIGYIR"
var convert = function (s, numRows) {
    const arr = []
    for (let i = 0; i < s.length; i++) {
        let key = (i % (2 * numRows - 2)).toString() === 'NaN' ? 0 : i % (2 * numRows - 2)
        debugger
        if (key <= numRows - 1) {
            if(arr[key]=== undefined) {
                arr[key] = ''
            }
            arr[key] = arr[key] + s[i]
        } else {
             if(arr[key]=== undefined) {
                arr[key] = ''
            }
            arr[2 * numRows - 2 - key] = arr[2 * numRows - 2 - key] + s[i]
        }
    }
    return arr.join('')
};

const res = convert(s, numRows)
console.log(res)
console 命令行工具 X clear

                    
>
console