6. Z字形变换(python3实现)

# 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:
# P   A   H   N
# A P L S I I G
# Y   I   R
# 之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"
# 实现一个将字符串进行指定行数变换的函数:
# string convert(string s, int numRows);
# 示例 1:
# 输入: s = "PAYPALISHIRING", numRows = 3
# 输出: "PAHNAPLSIIGYIR"
# 示例 2:
# 输入: s = "PAYPALISHIRING", numRows = 4
# 输出: "PINALSIGYAHRPI"
# 解释:
#
# P     I    N
# A   L S  I G
# Y A   H R
# P     I
#
#
# 您是否在真实的面试环节中遇到过这道题目呢?  是的没有
#
# 题目难度:
# 中等
# 通过次数:
# 5.7K
# 提交次数:
# 16.5K
# 贡献者:
# LeetCode

class Solution(object):
    def convert(self, s, numRows):
        str_length = len(s)
        node_length = 2*numRows - 2  # 两列之间的差
        result = ""
        if str_length == 0 or numRows == 0 or numRows == 1:
            return s
        for i in range(numRows):  # 从第一行遍历到最后一行
            for j in range(i, str_length, node_length):
                result += s[j]  # 第一行和最后一行  还有普通行的整列数字
                if i != 0 and i != numRows-1 and j - 2*i + node_length < str_length:
                      result += s[j-2*i+node_length]  # 单列行的数字
        return result



 
    原文作者:Z字形编排问题
    原文地址: https://blog.csdn.net/weixin_37887248/article/details/81452902
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞