在字符串数组中找到最长的公共前缀字符串。如果没有公共前缀,则返回一个空字符串“”

时间:2020-07-23 10:58:03

标签: python list substring

在字符串数组中找到最长的公共前缀字符串。 如果没有公共前缀,则返回一个空字符串“” 我试图编码这个问题

这是代码:

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        a=list(list(zip(*strs))[0])
        b=list(list(zip(*strs))[1])
        c=list(list(zip(*strs))[2])
        a1=""
        i=0
        while(len(strs)):
            if(a[i]==b[i]==c[i]):
                a1+=a[i]
                return a1

我试图通过从列表中提取元素然后与其他元素进行比较来解决。

不知道它被打到哪里,没有输出显示, 请帮忙!

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是开始饮食。 遍历所有字符串并捕获所有字符串的第一个字符 将它们添加到dict中,计数为1,键为第一个字符 如果找到重复项,则增加dict键的计数 现在,找到dict值最大的数字并将其存储在变量中

现在,使用2个字符键(起始值为1)来重复2个字符的dict的生成过程,如果在字符串列表中发现重复的2个字符,则将数字递增,并将前一个变量值替换为最近dict中的最大值。

通过增加要检查的字符数来重复该过程,直到dict中的最高值变为1,并且该值的键是最长的公共前缀

答案 1 :(得分:0)

因为len(strs)始终为True,所以您的程序陷入了无限循环。 另一个问题是,您只提取了字符串列表中每个字符串的前三个元素,但是最大的公共字符串的长度可能大于三个元素