【LeetCode】006.ZigZag Conversion - javascript

xiaoxiao2021-02-28  33

ZigZag转换,是什么意思?这个是困扰大家解题的关键。本质就是Z字形转换:将字符串换Z字排好,或者是倒“N”型排好;然后再按行重新组成新的字符串。

var convert = function(s, numRows) { var stopPoint = []; // 返回字串 var result = ""; // 特殊情况返回 if(numRows >= s.length || numRows<2) return s; // 创造顶点 for(var i = 0; i < s.length + 2*numRows - 2; i += 2*numRows - 2){ stopPoint.push(i); } // 去除第一个节点 0 ,单支不留;也可以不去掉,判断 undefined stopPoint.shift(); // 首行,左右相等,加减为0 result += s[0]; for(var i = 0; i<stopPoint.length; i++){ result += s[stopPoint[i]] == undefined?"":s[stopPoint[i]]; } // 正常行 for(var i = 1; i < numRows - 1; i++){ var j = 0; result += s[i]; while( j < stopPoint.length ){ result += (s[stopPoint[j] - i] == undefined ? "" : s[stopPoint[j] - i]) + (s[stopPoint[j] + i] == undefined ? "" : s[stopPoint[j] + i]); j++; } } // 末行 for(var i = numRows - 1; i < s.length; i += 2*numRows - 2){ result += (s[i] == undefined? "":s[i]); } return result; };
转载请注明原文地址: https://www.6miu.com/read-38907.html

最新回复(0)