【LeetCode】6. ZigZag Conversion Z 字形变换
作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/
公众号:负雪明烛
本文关键词:字形变换,ZigZag,题解,Leetcode, 力扣,Python, C++, Java
目录
- 题目描述
- 题目大意
- 解题方法
- 公式
- 日期
题目地址:https://leetcode.com/problems/zigzag-conversion/description/
题目描述
The string "PAYPALISHIRING"
is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N
A P L S I I G
Y I R
And then read line by line: "PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string s, int numRows);
Example 1:
Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:
Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:
P I N
A L S I G
Y A H R
P I
题目大意
把一个字符串按照锯齿型的方式去排列,然后按照行
进行拼接到一起。输出这样得到的结果。
解题方法
公式
明眼人一看就知道,这个肯定是有公式的。我自己推导的公式和JustDoIT的一样:
- 第一行和最后一行下标间隔都是
interval = n*2-2 = 8
; - 中间行的间隔是周期性的,第
i
行的间隔是:interval–2*i
,2*i
,interval–2*i
,2*i
,interval–2*i
,2*i
, …
Python 代码如下:
class Solution:def convert(self, s, numRows):""":type s: str:type numRows: int:rtype: str"""if numRows == 1: return sans = ""interval = 2 * (numRows - 1)for i in range(0, len(s), interval):ans += s[i]for row in range(1, numRows - 1):inter = 2 * rowi = rowwhile i < len(s):ans += s[i]inter = interval - interi += interprint(ans)for i in range(numRows - 1, len(s), interval):ans += s[i]return ans
日期
2018 年 6 月 27 日 ———— 阳光明媚,心情大好,抓紧科研啊
【LeetCode】6. ZigZag Conversion Z 字形变换相关推荐
- LeetCode-6:ZigZag Conversion(Z字形变换)
题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...
- leetcode第六题Z字形变换心得记录
算法学习之路-坚持走下去 Z字形变换 题目描述 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行 ...
- 0006-ZigZag Conversion(Z 字形变换)
这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求"一行的浪漫& ...
- leetcode刷题六z字形变换
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列.比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I R E T O ...
- leetcode第六题 Z字形变换
题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下 ...
- Leetcode题库 6.Z字形变换(C实现)
文章目录 思路 代码 思路 将字符串s使用字符'@'填充至W形或者V形 得到顶点与谷点分别存于New_start,New_end 外层循环遍历第1行至第numRows行 内层循环遍历每一行 例: 代码 ...
- leetcode刷题:z字形变换
题目: 图解思路 实现代码如下: class Solution { public:string convert(string s, int numRows) {if(numRows < 2) r ...
- Z 字形变换 C++实现 java实现 leetcode系列(六)
Z 字形变换 java实现 C++实现 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 ...
- [模拟|字符串] leetcode 6 Z字形变换
[模拟|字符串] leetcode 6 Z字形变换 1.题目 题目链接 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHI ...
最新文章
- PAT-BASIC-1016-部分A+B
- 盐噪声和胡椒噪声的区别_为什么加一点盐对您的密码很有用(但不包括胡椒粉!)
- 马化腾去年年薪同比下降 25%,腾讯的下一步怎么走?
- 每个Java程序员必须知道的5个JVM命令行标志
- 蓝桥杯 PREV-27 历届试题 蚂蚁感冒
- django drf 改变retrive的pk查询字段
- 兄dei,你的代码死循环了吗?
- Gaussian09 optimization trajectory: python script
- 辣椒app软件测试,testflight辣椒视频
- 计算机等级考试Excel总成绩,计算机等级考试EXCEL练习题-6公务员考试成绩表
- 单个像素代表的实际物理尺寸
- Mac上添加自己/公司的网络服务器盘
- 企业微信的渠道活码怎么用?到底有什么好处?
- excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法
- [转]stm32 sdio写入速度 SD卡【好文章】[F1开发板通用] 战舰STM32F103开发板 SDIO写入速度测试(使用FATFS)
- JavaSE基础 打印杨辉三角
- pycharm调试时显示图片
- 字符串格式化(format()使用)
- lr 1 语法分析器c语言,LR语法分析器
- JavaScript实现无缝轮播图效果
热门文章
- 【详细】Jmeter的安装配置与基本操作
- jupyter notebook快速入门使用详解及标记的使用(Markdown使用笔记)
- Matlab常用函数集合(各类文件读取/保存、数据转换、处理)——持续更新中
- glibc mysql,mysql安装(glibc版本安装5.7.22)
- SQL挂起的解决办法 SQL Server
- 国产CAD想说爱你,并不容易。
- [转载] 为研究网络游戏成瘾 我陪儿子玩王者荣耀
- 应用终端和服务器之间的交互 简单,基于UM220的北斗数据接收处理及简单应用
- [转]联想Win7 SP1 32位/64位OEM系统[官方原版]
- Confluence 6 如何考虑设置一个空间的主页