@author: ZZQ

@software: PyCharm

@file: convert.py

@time: 2018/9/20 20:12

要求: Z字形变换

将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:

P A H N

A P L S I I G

Y I R

之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"

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

string convert(string s, int numRows);
e.g.:
输入: s = "PAYPALISHIRING", numRows = 3
输出: "PAHNAPLSIIGYIR"
输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"

思路: 建一个有numRows个字符串的列表,一个循环写两次列表,一次顺着写,一次反着写,注意下标变化。

class Solution():
def __init__(self):
pass def convert(self, s, numRows):
"""
:type s: str
:type numRows: int
:rtype: str
"""
if numRows == 1:
return s
s_len = len(s)
zlist = []
for i in range(numRows):
sub_list = ""
zlist.append(sub_list)
k = 0
time = 0
while k < s_len:
if time == 0:
list_index = 0
while list_index < numRows:
if k < s_len:
zlist[list_index] += s[k]
else:
break
k += 1
list_index += 1
time += 1
else:
list_index = 1
while list_index < numRows:
if k < s_len:
zlist[list_index] += s[k]
else:
break
k += 1
list_index += 1 list_index -= 1
while list_index > 0:
list_index -= 1
if k < s_len:
zlist[list_index] += s[k]
else:
break
k += 1
time += 1
z_str = ""
for sub_str in zlist:
z_str += sub_str
return z_str if __name__ == "__main__":
answer = Solution()
print answer.convert(s="ABJHFSDKAGFSLABVSJDK", numRows=2)

Leetcode题库——6.Z字形变换的更多相关文章

  1. Leetcode(6)Z字形变换

    Leetcode(6)Z字形变换 [题目表述]: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...

  2. 【LeetCode】ZigZag Conversion(Z 字形变换)

    这道题是LeetCode里的第6道题. 题目要求: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ...

  3. C#版[击败100.00%的提交] - Leetcode 6. Z字形变换 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  4. Java实现 LeetCode 6 Z字形变换

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

  5. LeetCode Golang 6. Z 字形变换

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

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

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

  7. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

  8. leetcode刷题六<z字形变换>

    将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐 ...

  9. leetcode第6题:Z字形变换--直接模拟求解法

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

随机推荐

  1. UITableView 基本使用方法总结

    1..首先,Controller需要实现两个  delegate ,分别是  UITableViewDelegate 和  UITableViewDataSource2.然后 UITableView对 ...

  2. 关闭生产订单时报错“订单&的未处理将来更改记录组织删除标记/完成”,消息号CO688

    消息号 CO688 诊断 仍存在未来的更改记录,或从订单的确认过程的确认中要处理的错误记录.可能的确认过程是: 自动收货 反冲 实际成本的计算 数据传输至 HR 系统响应 未打算对订单设置删除标记/‘ ...

  3. jQuery----奇偶选择器和索引选择器

    奇偶选择器: $( " #uu>li:odd").css( " backgroundColor "," red " ); 获取id为u ...

  4. PHP+Ajax+plupload无刷新上传头像代码

    很简单的一款PHP+Ajax+plupload无刷新上传头像代码,兼容性很好,可以直接拿来用.你可以自定义各种类型的文件.本实例中只能上传"jpg", "png" ...

  5. 存储类、链接和内存管理(c prime plus)

    首先介绍三个概念: (1)作用域:作用域描述了程序中可以访问一个标识符的一个或多个区域. 一共有三种作用域:代码块作用域.函数原型作用域和文件作用域 a.代码块作用域:一个代码块是包含在开始花括号和对 ...

  6. 数据库之mongodb

    启动mongodb服务端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb ...

  7. lua函数定义

    FuncState proto结构数组保存函数原型信息;prev保存父函数体指针:actvar保存定义的局部变量:upvalues保存upvalue Lua源码中,专门有一个结构体FuncState用 ...

  8. 洛谷 P3795 钟氏映射

    洛谷 P3795 钟氏映射 题目背景 2233年,CSSYZ学校的数学老师兼数学竞赛顾问钟JG已经2200+岁啦! 为了庆生,他或她给广大人民群众出了道题. 题目描述 设集合N=M={x∣x∈N+​, ...

  9. Kubernetes学习之路(十六)之存储卷

    目录 一.存储卷的概念和类型 二.emptyDir存储卷演示 三.hostPath存储卷演示 四.nfs共享存储卷演示 五.PVC和PV的概念 六.NFS使用PV和PVC 1.配置nfs存储 2.定义 ...

  10. 使用Themeleaf时, HTML内嵌的JS代码需要注意< 和 >的问题

    如果你使用了Themeleaf, 你的HTML文件又使用了内嵌的JS代码,那么一定要注意 你的JS代码必须用这样用: <script> /*<![CDATA[*/ var a = 6 ...