【Leetcode】【python】ZigZag Conversion

来源:互联网 发布:wps流程图软件visio 编辑:程序博客网 时间:2024/06/05 19:44

题目大意

在行数row给定时,字符串“PAYPALISHIRING”的Z字形(zigzag)输出

解题思路

不涉及某种算法,考察思路。

创建一个二维数组,里面有row个数组。

设置好step=+1,一步步到了第3(row)步,将step设置为-1,往回走一步,再往回走一步,只到回到第一步,再将step设置为+1,如此循环。

最后将二维数组内list合并

代码

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        zigzag = [[] for x in range(numRows)]  # 创建一个二维数组[[],[],[]]        row, step = 0, 1        for c in s:            zigzag[row] += c,            if row == 0:                step = 1            elif row == numRows - 1:                step = -1            row += step        # return ''.join(reduce(operator.add, zigzag))        # [[u'P', u'A', u'H', u'N'], [u'A', u'P', u'L', u'S', u'I', u'I', u'G'], [u'Y', u'I', u'R']]        result = ''        for i in range(len(zigzag)):             result += ''.join(zigzag[i])  # list拼接为字符串         return result

总结