问题如下:
字符串“PAYPALISHIRING”在给定数量的行上以锯齿形图案写入,如下所示:(您可能希望以固定字体显示此图案以提高可读性)
P A H N
A P L S I I G
Y I R
然后逐行阅读:“PAHNAPLSIIGYIR”
编写将采用字符串并在给定行数的情况下进行此转换的代码:
字符串转换(字符串 s,int numRows);示例 1:
输入:s = "PAYPALISHIRING", numRows = 3 输出:"PAHNAPLSIIGYIR" 示例 2:
输入:s = "PAYPALISHIRING", numRows = 4 输出:"PINALSIGYAHRPI" 解释:
P I N
A L S I G
Y A H R
P I
我已经编写了以下代码,但是在如何将行标记为一次向下移动方面我陷入了困境,我增加了起始行,但是当它曲折回到顶部时,它应该减少。我无法弄清楚在不影响向下运动的情况下进行这项工作的逻辑。任何帮助,将不胜感激。
const convert = (s, numRows) => {
let startRow = 0
let endRow = numRows - 1
let startColumn = 0
let endColumn = Math.floor((s.length / 2) - 1)
s = s.split('')
let results = []
// to setup the columns
for (let i = 0; i < numRows; i++) {
results.push([])
}
while (startRow <= endRow && startColumn <= endColumn && s.length) {
for (let i = startRow; i <= endRow; i++) {
results[i][startColumn] = s.shift()
}
for (let i = endRow - 1; i >= startRow; i--) {
results[i][startColumn + 1] = s.shift()
startColumn++
}
//this line seems to be the issue
startRow++
}
return results
}
console.log(convert('PAYPALISHIRING', 4))
潇湘沐
拉丁的传说
德玛西亚99
随时随地看视频慕课网APP
相关分类