我正在研究一个leetcode问题,该问题要求我在一些字符串中找到最长的公共前缀,相同的字母。语言是python3。问题如下。 (https://leetcode.com/problems/longest-common-prefix/)
编写一个函数以在其中找到最长的公共前缀字符串 字符串数组。
如果没有公共前缀,则返回一个空字符串“”。
示例1:
输入:
["flower","flow","flight"]
输出:
"fl"
示例2:
输入:
["dog","racecar","car"]
输出:
""
说明:输入字符串之间没有通用前缀。
我试图获取最长的字符串,因为它必须包含所有常见字母。为此,我尝试获取字符串的长度列表并获得最长的长度。然后,我可以使用最长的长度来获取最长的字符串。但是,当我将代码提交给leetcode时,会出现“列表索引超出范围”的错误。
ls.sort()
lmax = ls[len(ls)-1]
我在这里没有看到列表索引范围问题,因为我以前使用过此方法。另外,我将代码复制到了IDLE,但没有报告错误。
下面的代码只是我代码的第一部分。其余的只是检查相同的字母。
如果有人可以帮助我解决这个问题,我将非常感激。谢谢。
class Solution:
def longestCommonPrefix(self, x):
list1 = []
for element in x: #convert strings into lists to search for common letters
list1.append(list(element))
i = 0 #for searching longest string
m = 0 #for indicating letters in the longest string
n = 0 #for indicating other strings
p = 0 #for indicating letters in other strings
ls = [] #search for the longest string
for strs in list1:
ls.append(len(strs))
ls.sort()
lmax = ls[len(ls)-1] ###This is the step that the bug occurs.##
while i <= len(list1)-1: # To get the longest string.
if len(list1[i]) == lmax:
break
else:
i += 1
longestStr = list1[i]
答案 0 :(得分:0)
我认为错误不在您认为的位置。仅当列表lmax = ls[len(ls)-1]
为空时,代码行ls
才会失败。旁注:要获取列表中的最后一个元素,请使用负索引,该索引从末尾开始倒数:lmax = ls[-1]
因此,我将再次检查ls
是否包含字符串。也许在切换IDE时,无法正确传递参数x
。