《Z字形变换》

python算法题之《Z字形变换》

题目要求

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

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

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

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

string convert(string s, int numRows);
示例 1:

输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"
示例 2:

输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:

L     D     R
E   O E   I I
E C   I H   N
T     S     G

代码及分析

class Solution:
    def convert(self, s, numRows):
        # 返回字符串
        ans = ''
        # 如果行数不等于1
        if numRows!=1:
            x = 2*(numRows-1)
        # 等于1
        else:
            x = 1
        # 一个空的列表,用于顺序存放每一行的字母
        ansL = []
        # 创建numRows字符串
        for i in range(numRows):
            # 默认为空
            ansL.append('')
        # 遍历每个字母的下标
        for i in range(len(s)):
            # 让0 ≤ j < x
            j = i % x
            # 如果j > numRows-1,则将该下标对应的字母放入第x-j行
            if j > numRows-1 :
                ansL[x-j]+=s[i]
            # 反之,放入第j行
            else:
                ansL[j] += s[i]
        # 将ansL中的字符串顺序连接返回
        for i in ansL:
            ans+=i
        return ans
image (1).png

结果

image (2).png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容