Я работаю над проблемой кода 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]