【发布时间】:2021-09-11 17:45:26
【问题描述】:
编写一个函数,在字符串数组中查找最长的公共前缀字符串如果没有公共前缀,则返回一个空字符串“”。 示例:输入:strs = ["flower","flow","flight"] 输出:“fl” 我是编码新手,并尝试解决这个问题(来自 leetcode)。我的方法是搜索字符串之间最短的字符串,这是我的代码,我不知道我在哪里做错了,似乎while循环根本不起作用。如果有人可以帮助我,我将不胜感激。这是我的代码:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
string = ""
len_st = []
for st in strs:
len_st.append(len(st))
m = min(len_st)
prefix = strs[len_st.index(m)]
while prefix:
for st in strs:
if prefix in st:
continue
else:
prefix = prefix.replace(prefix[-1], "")
break
return prefix
else:
return ""
输入:["flower","flow","flight"] 输出:“flo” 预期输出:“fl”
【问题讨论】:
-
你有一个
for循环,最后一行是break。这意味着它只会迭代一次。 -
与
while相同,最后一行是return。 -
if prefix in st:如果prefix在st中的任何位置,这将是True- 而不仅仅是在开头。您可以改用startswith()。 *已编辑 - 修正错字。
标签: python string while-loop longest-prefix