【发布时间】:2021-12-10 16:13:24
【问题描述】:
我有一个如下列表:
strs = ["flowers", "flow", "flight"]
现在,我想从列表中找到元素的longest prefix。如果没有匹配,那么它应该返回""。我正在尝试使用'Divide and Conquer' 规则来解决问题。以下是我的代码:
strs = ["flowers", "flow", "flight"]
firstHalf = ""
secondHalf = ""
def longestCommonPrefix(strs) -> str:
minValue = min(len(i) for i in strs)
length = len(strs)
middle_index = length // 2
firstHalf = strs[:middle_index]
secondHalf = strs[middle_index:]
minSecondHalfValue = min(len(i) for i in secondHalf)
matchingString=[] #Creating a stack to append the matching characters
for i in range(minSecondHalfValue):
secondHalf[0][i] == secondHalf[1][i]
return secondHalf
print(longestCommonPrefix(strs))
我能够将mid 和divide 列表分为两部分。现在我正在尝试使用后半部分并获得最长的前缀,但我无法这样做。我已经创建了一个stack,我将在其中添加连续匹配的字符,然后我将使用它与firstHalf 进行比较,但是如何比较获取continuous matching characters from start?
预期输出:
"fl"
只是一个建议也会有所帮助。我可以试试看。
【问题讨论】:
-
您想要最长的前缀还是任意的子字符串?这是两个不同的问题,如果您正在寻找专门的公共前缀,那么您就过于复杂了。 :)
-
我想找到最长的公共前缀,而不是任意子字符串
标签: python python-3.x list