[LeetCode]6. ZigZag Conversion

6. ZigZag Conversion

题意:按照Z的顺序排放字符串,接着按照行进行输出。

思路:一开始的思路是利用数组的step去输出,但是即便计算出中间的,还要把中间的结果插入到之前的结果中,显然太麻烦了。

利用一个下标在第0层和第row-1层之间进行来回移动,添加字符串中的字符,最后将每一行的结果join出来即可。

class Solution(object):
    def convert(self, s, numRows):
        """
        :type s: str
        :type numRows: int
        :rtype: str
        """
        if numRows == 1 or numRows >= len(s):
            return s
        level = [''] * numRows
        index, step = 0, 1
        for i in range(len(s)):
            level[index] += s[i]
            if index == 0:
                step = 1
            elif index == numRows - 1:
                step = -1
            index += step
        return ''.join(level)
posted @ 2017-08-24 03:35  banananana  阅读(134)  评论(0编辑  收藏  举报