leetcode 第6题(曲折转换)

185 阅读1分钟

给定一个字符串和一个数字(行数),按给定的行数曲折转换给定的字符串


例:

输入 : "ABCDEFG",3

输出:  "AEBDFCG"

解释:    A       E

              B   D  F

              C       G

按每行的顺序重新拼接字符串输出


输入: "ABCDEFGHIJK",4

输出:   "AGBFHCEIKDJ"


 解释:  A         G 

             B     F   H

             C  E       I  K

             D          J


解法:

class Solution:
    def convert(self, s: str, numRows: int) -> str:
        if numRows <= 1:
            return s
        step = 1
        pos = 0
        line = dict()
        for c in s:
            if pos in line:
                line[pos] += c
            else:
                line[pos] = c
            pos += step
            if pos == 0 or pos == numRows - 1:
                step *= -1
        
        result = ''
        for k in range(numRows):
            if k in line:
                result += line[k]
        
        return result