zoukankan      html  css  js  c++  java
  • 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;
    };
     
     
  • 相关阅读:
    apue第16章笔记
    重构与重写
    架构方面的笔记
    多进程失败拉起的demo
    Elasticsearch match_phrase用法
    c++风格
    cocos2d-x 3.2 移植到android
    Mac 下配置 Cocos2d-x 3-x android 的环境
    解决最新版的ADT没有NDK选项的问题
    待飞日记(第六天和第七天)
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12484559.html
Copyright © 2011-2022 走看看