常见z变换公式表(z变换定义公式)

# 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
#
#
# P A H N
# A P L S I I G
# Y I R

竖着写,Z字型排列,然后横着打印

# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
    def convert(self, s: str, numRows: int) -> str:
        cycle_index_list = []
        for i in range(numRows):
            cycle_index_list.append(i)
        # 画出来找索引的规律,找到0121循环体--3
        # 0121对应这[PAYP][ALIS][HIRI]这种循环
        for i in range(numRows-2, 0, -1):
            cycle_index_list.append(i)
        print(cycle_index_list)

        while len(cycle_index_list) < len(s):
            cycle_index_list = cycle_index_list + cycle_index_list
        # cycle_index_list比s长了无所谓
        # 映射后,就知道原s每个i位置的元素在第几行了
        # PAYPALISHIRING
        # 0121012101210121
        # 说明P,A,H,N在第零行
        # A,P,L,S,I,I,G在第一行
        print(cycle_index_list)
        # 结果是个二维数组,cycle_index_list的0121对应这个二维数组的行索引
        res_matrix = [
            []
            for _ in range(numRows)
        ]
        for i, value in enumerate(s):
            line_index = cycle_index_list[i]
            res_matrix[line_index].append(value)
        print("res_matrix:", res_matrix)
        res = []
        for row in res_matrix:
            for item in row:
                res.append(item)
        print("res:", "".join(res))
        return "".join(res)
# leetcode submit region end(Prohibit modification and deletion)
if __name__ == '__main__':
    s= Solution()
    s.convert("PAYPALISHIRING", 3)

———————————————–

如果是第一次阅读文章,可以看看下面的话。

以上内容由平时积累而成,尽量保证代码与注释合在一起,并未做过多篇幅的解释。不一定是最优解,但一定是自己能看得懂的。有疑问的地方还请留言评论。如果题干是原题,就没有写在文章中。后续内容会慢慢发出

欢迎大家评论,收藏和转发。

感谢大家的点赞和关注。

先赞后看,年薪百万

红帽帽,白签签,一起排队做酸酸。愿疫情早日过去。

............试读结束............

查阅全文加微信3231169

如来写作网gw.rulaixiezuo.com(可搜索其他更多资料)

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3231169@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.dawenyou.com/9014.html