首页 > 其他 > 详细

Leetcode Z字形变换

时间:2020-07-04 20:20:13      阅读:37      评论:0      收藏:0      [点我收藏+]

Z子变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

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

1、行数为1和2特殊情况单独处理:

2、一个list管理n行的字符串,  t和d管理插入到第几行的字符串 ,最后逐行拼接字符串

class Solution:
    def convert(self, s: str, numRows: int) -> str:

        if numRows ==1:
            return s
        if numRows==2:
            return s[0::2] + s[1::2]
        final =["" for i in range(numRows)]

        t= 0
        d = 1
        i = 0
        max1 = numRows-2
        while i<len(s):
            


            final[t]+=s[i]
            t+=d
            if d==1 and t>=numRows:
                t = max(numRows-2,0)
                d= -1
            elif d==-1 and t<1:
                t = 0
                d =1
            i+=1
        s1=‘‘
        #print(final)
        for i in range(len(final)):
            s1 +=final[i]
        return s1

  

Leetcode Z字形变换

原文:https://www.cnblogs.com/SuckChen/p/13236136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!