- 解题思路
请添加图片描述
(1)以一个V字形为一个循环,每次循环的次数为n=(2*numRows - 2)
(2)有s中每个字符在循环中的位置是x=i % n
(3)所属行号为y=min(x,n-x)
(4)以上图为例,有如下规则:
(5)根据规律可拼接出每一行的的字符串,最后合并所有行即可。
2.代码解析
(1)如果只有一行,则怎么输入怎么输出
(2)如果有多行,先声明一个rows数组有numRows位
(3)然后确定每个"V"的次数为n
(4)遍历所有的s[i]
(5)找到s[i]应该存放的位置放入
(6)最后将rows合并即可
3.代码
var convert = function(s, numRows) {
if(numRows == 1){
return s
}
var rows = new Array(numRows).fill("");
var n = 2 * numRows - 2;
for(var i = 0; i < s.length; i++) {
var x = i % n;
rows[Math.min(x, n - x)] += s[i];
}
return rows.join("");
};