解题方案:
var convert = function(s, numRows) {
if(numRows==1||numRows>=s.length){
return s;
} //1
let arr = new Array(numRows).fill('');//2
let down = true;//3
let index = 0;//4
for(let i=0;i<s.length;i++){
arr[index]+=s[i];
if(down){//5
index++;
}else{
index--;
}
if(index>=numRows-1){//6
down=false;
}
if(index<=0){
down=true;
}
}
return arr.join('')//7
};
解题思路:
1、先判断特殊情况:a、一行的情况,b、行数大于字符串长度的时候,直接返回原字符串就可以了;
2、字符串被分为了numRows行,那么分别获取每一行的字符就可以;
3、当前‘N’字形中是到下一行,还是上一行呢,最开始是一定是下一行的;
4、初始是第一行字符,也就是第0项;
5、循环遍历整个字符串,添加到当前行也就是index项中,如果是向下的话那么就要到下一行,否则就到上一行;
6、当到了第numRows行,就应该回头向上,当到了第0行,就应该回头向下;
7、将每一行拼接输出;