200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 6. Z 字形变换(给定字符串 画N后逐行拼接成新字符串)

6. Z 字形变换(给定字符串 画N后逐行拼接成新字符串)

时间:2018-10-25 03:24:59

相关推荐

6. Z 字形变换(给定字符串 画N后逐行拼接成新字符串)

一.将给定字符串按给定行数 画N ,输出从左往右逐行读取拼成的新字符串

比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:

L C I RE T O E S I I GE D H N

之后输出:"LCIRETOESIIGEDHN"

二.思路

一个数组list n行 一行一个字符串元素

遍历给定的字符串 每次放的地方list[index] index碰到0会 +1+1 碰到n-1 会-1-1 可以取一个方向dir=+-1 index为index加上这个反向

最后再将字符串拼接成新的字符串

注:当字符串还不够拐弯的时候 行数就是1行的时候

/*** @param {string} s* @param {number} numRows* @return {string}*//*** 一个数组 三个字符元素 遍历 012 往里放 10 12 10这样放*/var convert = function (s, numRows) {if (s == null || s.length < numRows || numRows == 1) { return s; }let list = new Array(numRows).fill('');let dir = 1;let index = 0;for (let i = 0; i < s.length; i++) {list[index] += s[i];index += dir;if (index == 0 || index == numRows - 1) dir = -dir;}return list.join('');};

三.知识点

按行排序:

初始化几个非空行,

从左到右迭代s,将每个字符添加到合适的行。可以使用当前行index和当前方向dir这两个变量对合适的行进行跟踪。

只有当我们向上移动到最上面的行或向下移动到最下面的行时,当前方向才会发生改变。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。