【问题标题】:find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string ""在字符串数组中找到最长的公共前缀字符串。如果没有公共前缀,则返回一个空字符串“”
【发布时间】:2020-11-13 02:02:44
【问题描述】:

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

代码如下:

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

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

不知道它在哪里被击中没有输出显示, 请帮忙!

【问题讨论】:

  • 你有一些输入数据的例子吗?
  • 这不是一个基于 Python 的问题,您正在尝试找出其中的逻辑。并提供一些示例输入和输出
  • while(len(strs)) 将永远循环,因为您没有在 while 循环中使用 strs 做任何事情。此外,i 未使用,并且始终为0,这可能会导致错误的输出。

标签: python list substring


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    现在重复 2 个字符的过程,使用 2 个字符键(起始值为 1)构建 dict,如果在字符串列表中发现重复的 2 个字符,则增加数字,并用最近 dict 中的最大值替换先前的变量值

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

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2021-02-14
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2020-12-12
      • 2011-10-21
      • 2018-05-07
      • 1970-01-01
      相关资源
      最近更新 更多