6.Z字形变换

2020-03-13
Z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。
请你实现这个将字符串进行指定行数变换的函数
示例:
输入: s = "LEETCODEISHIRING", numRows = 3
输出: LCIRETOESIIGEDHN
输入: s = "LEETCODEISHIRING", numRows = 4
输出: LDREOEIIECIHNTSG
解释:
L         D       R
E    O  E  I     I
E C     I     H N
T        S       G
题解:
思路1:模拟法
var convert = function (s, numRows) {
  if (numRows === 1) return s; // 如果是1直接返回本身
  let resultArr = new Array(numRows).fill(''); // 创建一个存字符串数组装模拟法分割出的字符串
  s = s.split(''); 
  let i = 0; // 记录当前在第几行
  let down = true; // 记录当前应该向上还是向下
  s.forEach(item => { 
    resultArr[i] += item; // 字符串数组的第i行拼接item
    if (i === numRows - 1) down = false; // 如果到了最后一行则改变方向向上
    else if (i === 0) down = true; // 如果是第一行则向下
    if (down) i++; 
    else i--;
  });
  let result = '';
  for (let i = 0; i < resultArr.length; i++) {
    result += resultArr[i]; // 字符串数组拼接成结果返回
  }
  return result;
};
 
 
原文地址:https://www.cnblogs.com/lanpang9661/p/12484559.html