将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

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

P   A   H   N
A P L S I I G
Y   I   R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

char * convert(char * s, int numRows){int n=strlen(s);if (numRows == 1 || numRows >= n) {return s;}int Cols=(numRows-1)*(n/(2*numRows-2)+1);char c[numRows][Cols]; for(int i=0;i<Cols;i++){for(int j=0;j<numRows;j++){c[j][i]='0';}}int row=0;int col=0;int cnt=0;for(int i=0;i<(n/(2*numRows-2)+1);i++){for(row=0;row<numRows;row++){if(cnt+1>n){break;}c[row][col]=s[cnt++];}row--;for(int j=0;j<numRows-2;j++){if(cnt+1>n)break;c[--row][++col]=s[cnt++];}col++;
}int cnt2=0;for(int i=0;i<numRows;i++){for(int j=0;j<Cols;j++){if(c[i][j]!='0')s[cnt2++]=c[i][j];}}return s;
}

LeetCode第六题Z字变换相关推荐

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

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

  2. leetcode第六题 Z字形变换

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

  3. leetcode-第六题 Z 字形变换

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

  4. LeetCode琅琊榜第十六层-Z字型变换(直接构造法 + 周期性算法)

    LeetCode6.Z字形变换 难度:中等 往期力扣与博主空间 题目链接  目录 官方解法1-构造Z字型数组模拟 案例分析 规律探索 原因: 代码实现 代码分析: 问题 官方解法二-压缩上述二维数组 ...

  5. leetcode算法题--Z字型变换

    题目链接:https://leetcode-cn.com/problems/zigzag-conversion/ 用一个二维数组来存储这个字符串,就是按照题目的方式存储,然后按行遍历即可. strin ...

  6. LeetCode刷题——Z字形变换

    目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution(object):def convert(self, s, numRows):"&quo ...

  7. Z字变换Python解法

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

  8. LeetCode Algorithm 6. Z 字形变换

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

  9. JS程序|Z字形变换

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

最新文章

  1. Eclipse,Mycclipse自动补全快捷键设置
  2. 6个整改!2018年国家重点实验室评估结果公布
  3. docker tomcat mysql_Docker下Tomcat容器中使用Mysql的方法
  4. jquery 手型 鼠标穿过时_专业电竞鼠标有什么独到之处?看完核技瑞你就知道了
  5. C语言编写带参数的宏编在三个数找最大数
  6. 阿里巴巴DevOps实践指南 | 数字化转型下,DevOps的根本目标是什么?
  7. Zookeeper实战之单机模式
  8. django框架下celery+rabbitmq+flower完成异步任务
  9. android中viewpager+fragment,Android开发之ViewPager+Fragment
  10. 5s突然一直信号无服务器,手机突然没信号了怎么回事?
  11. python 定时器_按键精灵定时器介绍和使用,不会的小伙伴速速看看精辟
  12. asp.net 读取mysql数据库_asp.net访问MySQL数据库
  13. qmake常用语法三
  14. 二维vector初始化方法
  15. Win11将输入法的繁体改为简体
  16. SPI 接口驱动电路设计
  17. 解决最新版搜狗输入法的软键盘快捷键Ctrl + Shift + K和Typora的热键冲突问题
  18. 一个网站的建设步骤(写给新手)
  19. Exchange邮箱爆破和信息收集
  20. PS图层+移动工具(2)复制删除快捷键 图层分组 前景色填充

热门文章

  1. canvas图像处理汇总
  2. Animation动画相关
  3. ML - 线性回归的评估(MSE、RMSE、MAE、R Square)
  4. 广州医院病理科设计误区
  5. jQuery学习:scroll滚动 垂直滚动scrollTop 水平滚动scrollLeft
  6. 简单快递鸟单号识别查询接口API/插件开发使用
  7. 台式计算机是否属于工装,工装分类《机械加工所谓的工装都包含什么?》
  8. 修改服务器lldp的mac地址,通过命令行界面(CLI)配置链路层发现协议(LLDP)在交换机的端口设置...
  9. 2使用可扩展 SDK
  10. C语言实现香农编码(二进制编码)