注 题目来源:力扣

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L   C   I   R
E T O E S I I G
E   D   H   N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数
/*** @param {string} s* @param {number} numRows* @return {string}*/
var convert = function(s, numRows) {};

解题思路:这个题目给人直观的感受就是把数字分为numRows个数组进行存储,然后再把这几个数组一合并。(原谅我当时的想法,还想着每个字母存一个真的是傻),但是转念一想,既然可以存了,那为什么不存成一个数组,每个元素存储一个字符串代表一行呢。

然后主要思路是这样的,遍历一次s字符串,每取一个s[i] 将对应元素放入 arr[i] ,设置一个flag表示此时z字变换需要往上还是往下,每当flag=0或者flag=numRows-1的时候就变换flag。一图胜千言,画一个图吧(excel画的草图)

啰嗦了这么多,直接贴代码吧

/*** @param {string} s* @param {number} numRows* @return {string}*/
var convert = function(s, numRows) {//定义一个数组存储每行的字符串,num标记属于哪行的字符串,flag表示此时向上还是向下let arr=[],num=0,flag=false;if(numRows==1) return s;for(let c=0;c<numRows;c++){arr[c]="";}for(let c=0;c<s.length;c++){//到达最后一行if(num===numRows-1||num===0){flag=!flag;}arr[num]+=s[c];flag?++num:--num;}let ans='';for(let item of arr){ans+=item;}return ans;
};

JS程序|Z字形变换相关推荐

  1. Z 字形变换 C++实现 java实现 leetcode系列(六)

    Z 字形变换  java实现 C++实现  将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 ...

  2. java z+_Java Z 字形变换

    – 题目:Z 字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: ...

  3. 【LeetCode】6.Z 字形变换

    6.Z 字形变换 我的思路貌似没有第二家,不过我懒得解释了. #include <string> #include <iostream> using namespace std ...

  4. LeetCode Algorithm 6. Z 字形变换

    6. Z 字形变换 Ideas 这题的思路其实只要想到了就很简单,首先创建一个numRows行的矩阵,每一行用来存Z字变换后每一行的字符,然后遍历字符串s,其实就是从上往下然后从下往上填充到每一行,所 ...

  5. leetcode题库:6. Z字形变换

    题目: /**题目:6. Z字形变换(题目地址:https://leetcode-cn.com/problems/zigzag-conversion/description/)  * 将字符串 &qu ...

  6. [模拟|字符串] leetcode 6 Z字形变换

    [模拟|字符串] leetcode 6 Z字形变换 1.题目 题目链接 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHI ...

  7. leetcode第六题Z字形变换心得记录

    算法学习之路-坚持走下去 Z字形变换 题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行 ...

  8. LeetCode——6. Z 字形变换

    6. Z 字形变换(中等难度) 题目描述: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING ...

  9. 图解LeetCode06:Z字形变换

    LeetCode06:Z字形变换 将一个给定字符串s根据给定的行数numRows,以从上往下.从左到右及进行Z字形排列 比如输入字符串为"PAYPALISHIRING"行数为3时, ...

最新文章

  1. jQuery高度及位置操作
  2. C++纯虚函数与抽象类
  3. 2021年中国K12在线辅导行业总结和趋势洞察
  4. 用户需求说明书_「软件项目管理入门」(21) 需求调研和需求分析怎么做?
  5. 如何学好前端,这5点你一定要知道!
  6. 本田思域自动挡的使用技巧
  7. linux 运行java工程师_java工程师linux命令,这篇文章就够了
  8. linux shell中实现字符串反转的几种简单方法
  9. 剑指offer 66题 -- 丑数
  10. 信息搜集 - 二层发现 arping
  11. 常用制作钓鱼网站的工具
  12. 3D 小游戏《飞跃地平线 Plus》开发分享
  13. 一元四次方程求根实现
  14. 深度学习baseline模型_深度学习模型在序列标注任务中的应用
  15. win10内存占用率过高怎么办_DNF:WIN10玩DNF卡顿,内存占用过高的解决方法
  16. 5G课程笔记--华为ICT课堂(初学)(二)
  17. 【正点原子FPGA连载】 第二十九章TFT LCD画板实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  18. e680i linux终端,E680I刷机说明
  19. 无法安装某些更新 Windows XP 安全更新程序 (KB2686509)
  20. OpenGL入门示例3——黑色背景绘制绿色圆形

热门文章

  1. 【大数据入门核心技术-Tez】(一)Tez介绍
  2. IBinder对象在进程间传递的形式(二)
  3. SQL-多表关联查询详解
  4. 模板脚手架资质怎么办理
  5. Swin Transformer 不重叠窗口
  6. 一台笔记本只有一个显卡,如何同时连接两台显示器
  7. Linux中hadoop下载安装及环境配置
  8. Linux开发工具(3)——gcc/g++
  9. 【阿朱洞察】中国大数据行业的下一步走向
  10. Johnson_Trotter 生成排列算法