6. Z 字形变换
class Solution:
def convert(self, s: str, numRows: int) -> str:
if len(s)<=numRows:
return s
#规律:先向下再向上依次论题,其中向下走是竖直向下走,向上走是
#为每一行初始化一个字符串
rows = [""]*numRows
#初始化一个变量来记录当前是在往下走还是在往上走
going_down = True
#初始化一个变量来记录当前是在第几行
row_pointer = 0
n = len(s)
i = 0
while i<n:
rows[row_pointer] += s[i]
#如果当前是往下走,并且已经走到了最后一行,那下一步就应该往上走
if going_down and row_pointer==numRows-1:
going_down = False
row_pointer-=1
#如果当前是往下走,并且还没到最后一行,那下一步就应该继续往下走
elif going_down and row_pointer<numRows-1:
row_pointer+=1
#如果当前是往上走,并且已经到第一行,那下一步就应该转而往下走
elif not going_down and row_pointer == 0:
going_down = True
row_pointer+=1
#如果当前是往上走,并且还没到第一行,那下一步就应该继续往上走
elif not going_down and row_pointer>0:
row_pointer-=1
i+=1
return "".join(rows)
# return rows
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 逻漫星空
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果