【发布时间】:2019-05-27 19:29:48
【问题描述】:
在使用列表方法解决之字折线问题 (https://leetcode.com/problems/zigzag-conversion/) 时,第 6 行出现列表索引超出范围错误。为什么会出现这样的错误?
def convert(self, s, numRows):
row=0
down=True
rows=[[] for i in range(numRows)]
for i in range(len(s)):
rows[row].extend(s[i])
#print(rows)
if(row==0):
down=True
elif(row==len(s)-1):
down=False
if down:
row+=1
else:
row-=1
st=[]
for k in rows:
st+=k
return ''.join(st)
【问题讨论】:
-
你理解错误信息吗?
-
@Blorgbeard 我相信是的。 rows 数组的访问超出了其初始设置。但是“行”会增加/减少以解决这个问题。我说的对吗?
-
rows的初始容量是numrows,这似乎与len(s)没有任何关系,那么您为什么期望rows[row]保持在范围内呢? -
elif(row==len(s)-1)- 那不应该是len(rows)吗? -
您的
row超出范围,原因是您使用len(s)(与s)而不是numRows。但它仍然是不正确的。