LeetCode第六题Z字变换
将一个给定字符串 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字变换相关推荐
- leetcode第六题Z字形变换心得记录
算法学习之路-坚持走下去 Z字形变换 题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行 ...
- leetcode第六题 Z字形变换
题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下 ...
- leetcode-第六题 Z 字形变换
题目 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C ...
- LeetCode琅琊榜第十六层-Z字型变换(直接构造法 + 周期性算法)
LeetCode6.Z字形变换 难度:中等 往期力扣与博主空间 题目链接 目录 官方解法1-构造Z字型数组模拟 案例分析 规律探索 原因: 代码实现 代码分析: 问题 官方解法二-压缩上述二维数组 ...
- leetcode算法题--Z字型变换
题目链接:https://leetcode-cn.com/problems/zigzag-conversion/ 用一个二维数组来存储这个字符串,就是按照题目的方式存储,然后按行遍历即可. strin ...
- LeetCode刷题——Z字形变换
目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution(object):def convert(self, s, numRows):"&quo ...
- Z字变换Python解法
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P ...
- LeetCode Algorithm 6. Z 字形变换
6. Z 字形变换 Ideas 这题的思路其实只要想到了就很简单,首先创建一个numRows行的矩阵,每一行用来存Z字变换后每一行的字符,然后遍历字符串s,其实就是从上往下然后从下往上填充到每一行,所 ...
- JS程序|Z字形变换
注 题目来源:力扣 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列.比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C ...
最新文章
- Eclipse,Mycclipse自动补全快捷键设置
- 6个整改!2018年国家重点实验室评估结果公布
- docker tomcat mysql_Docker下Tomcat容器中使用Mysql的方法
- jquery 手型 鼠标穿过时_专业电竞鼠标有什么独到之处?看完核技瑞你就知道了
- C语言编写带参数的宏编在三个数找最大数
- 阿里巴巴DevOps实践指南 | 数字化转型下,DevOps的根本目标是什么?
- Zookeeper实战之单机模式
- django框架下celery+rabbitmq+flower完成异步任务
- android中viewpager+fragment,Android开发之ViewPager+Fragment
- 5s突然一直信号无服务器,手机突然没信号了怎么回事?
- python 定时器_按键精灵定时器介绍和使用,不会的小伙伴速速看看精辟
- asp.net 读取mysql数据库_asp.net访问MySQL数据库
- qmake常用语法三
- 二维vector初始化方法
- Win11将输入法的繁体改为简体
- SPI 接口驱动电路设计
- 解决最新版搜狗输入法的软键盘快捷键Ctrl + Shift + K和Typora的热键冲突问题
- 一个网站的建设步骤(写给新手)
- Exchange邮箱爆破和信息收集
- PS图层+移动工具(2)复制删除快捷键 图层分组 前景色填充
热门文章
- canvas图像处理汇总
- Animation动画相关
- ML - 线性回归的评估(MSE、RMSE、MAE、R Square)
- 广州医院病理科设计误区
- jQuery学习:scroll滚动 垂直滚动scrollTop 水平滚动scrollLeft
- 简单快递鸟单号识别查询接口API/插件开发使用
- 台式计算机是否属于工装,工装分类《机械加工所谓的工装都包含什么?》
- 修改服务器lldp的mac地址,通过命令行界面(CLI)配置链路层发现协议(LLDP)在交换机的端口设置...
- 2使用可扩展 SDK
- C语言实现香农编码(二进制编码)