6_Z字型变换

1、题目
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
P A H N
A P L S I I G
Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。
2、代码

        def convert(self, s, numRows):
            """
            (1)V字型循环,周期为n=(2*numRows-1)(2倍行数 - 头尾2个)。
            (2)对于字符串索引值 i,计算 x = i % n 确定在循环周期中的位置。
            (3)则行号 y= min(x, n - x)。
            """
            if numRows == 1:
                return s
            rows = [""] * (numRows)
            n = 2 * numRows - 2
            for i in range(0, len(s)):
                x = i % n
                print("i:", i, "n:", n, "x:", x)
                rows[min(x, n - x)] += s[i]
            return "".join(rows)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容