这道题的解答很有意思,利用了一个flag标志
怎么说
就是来来回回的遍历
我们可以不设置k++,k–
这样,就是可以设置flag=1
然后到了临界的时候,再设置flag=-flag
这样就不用写大量的if else了非常的方便
看代码
class Solution:
def convert(self, s: str, numRows: int) -> str:
if len(s)==0:
return ""
if numRows==1:
return s
l=[]
for i in range(numRows):
l.append([])
flag=1
l[0].append(s[0])
k=1
for c in s[1:]:
l[k].append(c)
if k==numRows-1 or k==0:
flag=-flag
k+=flag
s=""
for item in l:
s+="".join(item)
return s
上面是我的代码,我的比较死板,认为flag必须是从1开始,但是第一个元素是0,就立马反转,所以使得索引变成-1,要解决这个问题,只好,把0放在最外面处理
作者采用了不一样的思路
他认为flag初始值是-1,这样遇到0,反转成1,巧妙的解决了这个问题