题目:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
这个方法运用了找规律的方式解决。
源码:
var convert = function(s, numRows) {
if(numRows === 1) return s;
let ans = [];
let groupNum = numRows*2 - 2;
for(let i=0; i<numRows; i++){
if(i === 0 || i === numRows-1){
// 第一行和最后一行特殊处理
for(let j=i; j<s.length; j+=groupNum){
ans.push(s[j]);
}
} else {
let k = groupNum - 2 * (i - 0);
for(let j=i; j<s.length; j+=groupNum){
ans.push(s[j]);
ans.push(s[j + k]);
}
}
}
return ans.join("");
}
结果: