将一个给定字符串 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);

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zigzag-conversion

例:

输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P       I      N
A   L S    I G
Y A  H R
P      I

# 解析:给定多少行,就初始化多少空字符,然后将给定字符串从第一个字符开始依次加入到每个空字符中,当加入到最后一个就反向遍历,遍历到第一个就再正向遍历

class Solution(object):def convert(self, s, numRows):""":type s: str:type numRows: int:rtype: str"""if numRows == 1 or numRows >= len(s): return s  # 只有一列的情况直接返回原字符串r, j, k = ['']*numRows, 0, 1  # 初始化几个空字符串,子字符串下标,计数器for i in s:  # 遍历每一个字符r[j] += i  # 添加到当前子字符串中j += k  # 换字符串if j == 0 or j == numRows-1: k=-k  # 当遍历到头或尾时改变遍历方向return ''.join(r)  # 直接将字符串连起来

Z字变换Python解法相关推荐

  1. leetcode6 Z字形变换 python

    题目: 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: P A H N A P L S I I G Y I R之后从左到右"PAHNAPLSIIG ...

  2. LeetCode第六题Z字变换

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

  3. LeeTCode:6. Z 字形变换 python实现

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

  4. LeetCode Algorithm 6. Z 字形变换

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

  5. JS程序|Z字形变换

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

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

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

  7. LeetCode 215. Kth Largest Element in an Array--数字第K大的元素--最大堆或优先队列--C++,Python解法

    题目地址:Kth Largest Element in an Array - LeetCode Find the kth largest element in an unsorted array. N ...

  8. python实现倒n字形排列_Leetcode问题库——Z形变换(Python),补充X形变换,字形

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

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

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

最新文章

  1. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)
  2. phoenix 开发API系列(二)phoenix 各类 api 实现方式
  3. python3各版本区别-Python2 与Python3的版本区别实例分析
  4. mail、mailx、sendmail的区别
  5. 2015春节期间读完两本书,立贴为证。
  6. python网络编程:UDP方式传输数据
  7. Java并发编程之CountDownLatch(闭锁)使用详解
  8. 调用外部文件(ShellExecute)
  9. elementUI vue 编辑中的input的验证残留清除
  10. Web中Servlet
  11. python第6天作业
  12. Python 函数也是一种对象
  13. IP寻址与子网划分网管员要知道什么
  14. 苹果匠艺:乔布斯身边的天才
  15. 投票系统程序设计缺陷分析
  16. 我该如何带好你—我的团队
  17. 【阿里云镜像】更新阿里巴巴开源镜像站镜像——Ubuntu镜像
  18. 示波器电流探头传播延迟的测量
  19. 算1 - n的阶乘和末6位(超详细)
  20. FrameExit:Conditional Early Exiting for Efficient Video Recognition

热门文章

  1. 使用 Recipe 安装 SAP Commerce Cloud
  2. JavaScript 异步执行的学习笔记 - 什么是事件循环 Event loop?
  3. SAP Spartacus Cost Center list的实现原理
  4. SAP Spartacus User form通过label标签的实现原理
  5. SAP Spartacus 中,Angular <ng-container>使用的一个例子
  6. 一个利用System.gc和finalize研究Java垃圾回收机制的练习
  7. SAP S/4HANA Smart Business Filter is too complex - step by step
  8. every function in scala is an instance of a class
  9. SAP WebIDE登录时,有时会发生超时现象
  10. 两种方法动态获得ABAP类的class attribute的值