python indexerror_Python 未超索引情况下 显示 IndexError

如下,我正在解 leetcode 第14题 找数组的最长公共前缀。

想法是先排序,找出最短的值,

然后循环最短值的长度次,然后再循环数组,对比最短值的索引和数组内其他值的索引是否相同.

不同就跳出循环返回最长公共前缀

不懂的是这里为什么会在未超索引的情况下显示 超索引呢?

代码如下

class Solution(object):

def longestCommonPrefix(self, strs):

strs.sort(key = len)

if len(strs) >= 2:

z = strs[0]

for i in range(len(z)):

for s in strs[1:]:

if z[i] != s[i]:

z = z[0:i]

break

else:

print(z[i], s[i], s, i, z)

return z if z else ''

elif len(strs) == 1:

return strs[0]

else:

return ''

s = Solution()

print(s.longestCommonPrefix(["flower","flow","flight"]))

报错如下:

f f flower 0 flow

f f flight 0 flow

l l flower 1 flow

l l flight 1 flow

o o flower 2 flow

Traceback (most recent call last):

File "C:\Users\Administrator\Downloads\shaoq.py", line 50, in

print(s.longestCommonPrefix(["flower","flow","flight"]))

File "C:\Users\Administrator\Downloads\shaoq.py", line 38, in longestCommonPrefix

if z[i] != s[i]:

IndexError: string index out of range

[Finished in 1.1s]

但是同样的循环我测试了下在 powershell 里面是可以运行的,奇怪

>>> x = ["flower","flow","flight"]

>>> x.sort(key = len)

>>> x

['flow', 'flower', 'flight']

>>> z = x[0]

>>> for i in range(len(z)):

... for st in x[1:]:

... print(z[i], st[i])

...

f f

f f

l l

l l

o o

o i

w w

w g

>>> for i in range(len(z)):

... for st in x[1:]:

... if z[i] != st[i]:

... print(i, z[i], st[i], z[0:i])

...

2 o i fl

3 w g flo

等解答,谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值