解题思路: 我们可以 1.设置一个列表:列数为 numRows 和字符串长度的最小值 2.我们可以发现一个规律:就是row=0 和row=numRows -1 时都会改变方向 -1或者+1 操作 3.设置一个改变方向的变量flag 当row=0 和row=numRows -1 是就改变flag #设置标志位,碰到第0或者第numsRows-1行,就要改变flag, # 使row变化的方向发生改变,如果flag为True,就使row+=1,反之让row-=1 # LEETCODEISHIRING class Solution: def convert(self, s: str, numRows: int) -> str: if numRows == 1: return s # 单独讨论 # *表示重复列 res = [''] * min(len(s), numRows) print(res) row = 0 flag = False for x in s: res[row] += x if row == 0 or row == numRows - 1: # 改变标志位 flag = not flag if flag: row += 1 else: row -= 1 print (res) return ''.join(res) if __name__ == '__main__': a = Solution() palindrome_bool = a.convert("ABCDEFGHIJKLMN",3) print(palindrome_bool)
Z 字形变换 python实现
最新推荐文章于 2024-01-14 10:21:31 发布