作者: 负雪明烛
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的一样:

  1. 第一行和最后一行下标间隔都是 interval = n*2-2 = 8;
  2. 中间行的间隔是周期性的,第 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 字形变换相关推荐

  1. LeetCode-6:ZigZag Conversion(Z字形变换)

    题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...

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

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

  3. 0006-ZigZag Conversion(Z 字形变换)

    这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求"一行的浪漫& ...

  4. leetcode刷题六z字形变换

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

  5. leetcode第六题 Z字形变换

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

  6. Leetcode题库 6.Z字形变换(C实现)

    文章目录 思路 代码 思路 将字符串s使用字符'@'填充至W形或者V形 得到顶点与谷点分别存于New_start,New_end 外层循环遍历第1行至第numRows行 内层循环遍历每一行 例: 代码 ...

  7. leetcode刷题:z字形变换

    题目: 图解思路 实现代码如下: class Solution { public:string convert(string s, int numRows) {if(numRows < 2) r ...

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

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

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

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

最新文章

  1. PAT-BASIC-1016-部分A+B
  2. 盐噪声和胡椒噪声的区别_为什么加一点盐对您的密码很有用(但不包括胡椒粉!)
  3. 马化腾去年年薪同比下降 25%,腾讯的下一步怎么走?
  4. 每个Java程序员必须知道的5个JVM命令行标志
  5. 蓝桥杯 PREV-27 历届试题 蚂蚁感冒
  6. django drf 改变retrive的pk查询字段
  7. 兄dei,你的代码死循环了吗?
  8. Gaussian09 optimization trajectory: python script
  9. 辣椒app软件测试,testflight辣椒视频
  10. 计算机等级考试Excel总成绩,计算机等级考试EXCEL练习题-6公务员考试成绩表
  11. 单个像素代表的实际物理尺寸
  12. Mac上添加自己/公司的网络服务器盘
  13. 企业微信的渠道活码怎么用?到底有什么好处?
  14. excel文件无法打印提示内存不足_Mac应用程序无法打开提示不明开发者或文件损坏的处理方法
  15. [转]stm32 sdio写入速度 SD卡【好文章】[F1开发板通用] 战舰STM32F103开发板 SDIO写入速度测试(使用FATFS)
  16. JavaSE基础 打印杨辉三角
  17. pycharm调试时显示图片
  18. 字符串格式化(format()使用)
  19. lr 1 语法分析器c语言,LR语法分析器
  20. JavaScript实现无缝轮播图效果

热门文章

  1. 【详细】Jmeter的安装配置与基本操作
  2. jupyter notebook快速入门使用详解及标记的使用(Markdown使用笔记)
  3. Matlab常用函数集合(各类文件读取/保存、数据转换、处理)——持续更新中
  4. glibc mysql,mysql安装(glibc版本安装5.7.22)
  5. SQL挂起的解决办法 SQL Server
  6. 国产CAD想说爱你,并不容易。
  7. [转载] 为研究网络游戏成瘾 我陪儿子玩王者荣耀
  8. 应用终端和服务器之间的交互 简单,基于UM220的北斗数据接收处理及简单应用
  9. [转]联想Win7 SP1 32位/64位OEM系统[官方原版]
  10. Confluence 6 如何考虑设置一个空间的主页