y学习吧! 发表于 2022-8-12 14:12:51

为什么list index out of range

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
      x=0
      m=0
      listed=[]
      for i,j in enumerate(s):
            listed.extend(j)
            while i+1<len(s):
               if listed == listed:
                         if x<m:                  
                           x=m
                         m=0
               else:
                      m+=1
      print(x)

xruiy 发表于 2022-8-12 14:18:47

本帖最后由 xruiy 于 2022-8-12 14:32 编辑

应将第九行改为:
if listed == listed
索引超出范围

haoren1ge 发表于 2022-8-12 14:30:28

当i=0的时候,listed的长度为1,if listed == listed: 这句话会造成下标越界。(其实所有情况都会越界,i其实就是数组的最大下标,任何时候i+1都会越界)

xruiy 发表于 2022-8-12 14:32:41


if listed==listed

y学习吧! 发表于 2022-8-12 14:36:08

为什么已经改了还是超出时间限制

一点点儿 发表于 2022-8-12 14:36:53

第9行if listed == listed列表索引超范围了

而且 第7行 listed.extend(j)extend()函数参数是列表,而j是字符串   应改为listed.extend()

y学习吧! 发表于 2022-8-12 15:01:17

append不能添加可迭代对象

一点点儿 发表于 2022-8-12 16:23:51

改后代码:
class Solution(object):
    def lengthOfLongestSubstring(self, s):
      """
      :type s: str
      :rtype: int
      """
      x=0
      s_len = len(s)
      for sub_start in range(s_len):
            list = ]
            for i in range(sub_start + 1, s_len):
                if list.count(s) == 0:
                  list.append(s)
                else:
                  break
            sub_len = len(list)
            if sub_len > x:
                x = sub_len
      return x
页: [1]
查看完整版本: 为什么list index out of range