思路:遍历字符串,用一个列表去模拟“变换后的每一行”,把遍历到的字符填入列表中它应在的行数。定义一个flag,用于记录当前填入行的方向是向下还是向上。在遇到最后一行或第一行的时候,反转flag的值。
class Solution:
def convert(self, s: str, numRows: int) -> str:
if numRows == 1:
return s
line = ["" for _ in range(numRows)]
flag = -1 # 1: down, -1: up
i = 0
for c in s:
line[i] += c
if i == numRows - 1 or i == 0:
flag = -flag
i += flag
return "".join(line)