解题思路
划一划就出来了,枚举下3和5的索引树就可以看出规律来。
第一行和最后一行为一类以初始位置递增(单一递增数列),其他行为一类(以初始两个位置分别递增,两个递增序列叠加)
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*
* 1 9 17 8
* 2 8 10 16 18 2 8
* 3 7 11 15 19 3 7
* 4 6 12 14 20 4 6
* 5 13 21 5
*
* 1 5 9 13 1 4
* 2 4 6 8 10 12 14 2 4 4
* 3 7 11 15 3 4
*
*/
var convert = function(s, numRows) {
var re = "";
for (var i = 0; i < s.length ; i += 2*numRows -2) {
re += s[i]
}
for(i = 1; i < numRows - 1; i++) {
var k1 = i;
var k2 = 2*numRows - i;
while (k1 < s.length || k2 < s.length) {
if (k1 < s.length) {
re += s[k1];
k1 += 2*numRows - 2;
}
if (k2 < s.length) {
re += s[k2];
k2 += 2*numRows - 2;
}
}
}
for (i = numRows; i < s.length; i += 2*numRows -2) {
re += s[i];
}
return re;
};
网友评论