首页 > 其他 > 详细

6.Z字形变换

时间:2020-03-13 11:24:44      阅读:49      评论:0      收藏:0      [点我收藏+]
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;
};

 

 
 

6.Z字形变换

原文:https://www.cnblogs.com/lanpang9661/p/12484559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!