ZigZag Conversion


avatar
bo-jwolf 2018-02-08 4.11k

leetcode6: ZigZag Conversion
如题,z(反向N)字型打印
输入:”ABCDEFG” 3
A E
BDF
C G文字
输出:“AEBDFCG

模拟最通俗易懂,从样例可以看出,实际上就是遍历字符串,自上而下,当达到要求的高度再反向自下而上。将每一行的的字符串存储在同一层vector里面,最后进行拼接就得到结果

第一感觉这个题目有数学方法,但是总是得不出合理的规则。看了如下数学解法后,觉得还不如模型简便。

class Solution:
    def convert(self, s, numRows):
        """
        :type s: str
        :type numRows: int
        :rtype: str
        """
        if len(s) <= numRows:
            return s
        dirNum = 1
        indexNum = 0
        strArr = []
        for var in range(len(s)):
            if len(strArr) < indexNum + 1:
                strArr.append([])
            strArr[indexNum].append(s[var])
            if indexNum + 1 == numRows:
                dirNum = -1
            if indexNum == 0:
                dirNum = 1
            indexNum = indexNum + dirNum
        tmpStr = ""
        for var in strArr:
            tmpStr = tmpStr + "".join(var)
            # print(var, tmpStr)
        # print(tmpStr)
        return tmpStr

暂无评论

发表评论

相关阅读