1.题目描述
2.测试代码
var convert = function(s, numRows) {
if(numRows===1){
return s
}
let newMap=new Map;
for(let i=1;i<=numRows;i++){
newMap.set(i,'')
}
let endStr='',status=true,count=1;
for(let i=0;i<s.length;i++){
if(status){
newMap.set( count,newMap.get(count)+s[i])
++count;
if(count===numRows+1){
status=false;
count-=2;
}
}else{
newMap.set( count,newMap.get(count)+s[i])
--count;
if(count===0){
status=true;
count+=2;
}
}
}
for(let i=1;i<=numRows;i++){
endStr=endStr+newMap.get(i)
}
return endStr
};
3.测试结果
4.解题思路
- 将字形变换想象成“钟摆”,只不过摆动的幅度是不变的
- 根据钟摆的幅度,动态的开辟对应的数组
- 折返时通过变量的状态来控制即可,放入数组中的位置通过最后或者最前一个数组下标进行控制