美文网首页
14. 最长公共前缀(easy)

14. 最长公共前缀(easy)

作者: genggejianyi | 来源:发表于2019-05-17 14:54 被阅读0次

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。

  • show the code:
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        ss = list(map(set,zip(*strs)))
        res = ''
        for i,x in enumerate(ss):
            x = list(x)
            if len(x) > 1:
                break
            res += x[0]
        return res
  • 这个题用python非常好做,不需要用到官方题解中的什么分治,水平扫描等等。
  • 首先要明白python中zip函数的作用,下面这个例子很好的说明了其作用:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
  • 直接对strs进行解压,将每个字符按照单个字母展开,如["flower","flow","flight"]解压成[('f', 'f', 'f'), ('l', 'l', 'l'), ('o', 'o', 'i'), ('w', 'w', 'g')]这里注意,以最短的单词为准。
  • 然后我们就可以找到规律了:只有当三个单词的同一位置的字母相同时,这个字母才是公共前缀。也就是说上文中的('f','f','f'),('l','l','l')都是公共前缀,于是最后的结果就是'fl'
  • 具体表现到代码中:先对解压后的结果去重,长度为1则表示三个单词均相同,即是公共前缀,长度大于1则break跳出循环。

相关文章

  • 14. 最长公共前缀(easy)

    编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flo...

  • 14. 最长公共前缀

    20180923-摘抄自14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,...

  • 算法第3天:最长公共前缀

    leetcode 14. 最长公共前缀 simple 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共...

  • [day4] [LeetCode] [title14,122]

    14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例 ...

  • 14. 最长公共前缀

    14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 说明...

  • 14.最长公共前缀

    14.最长公共前缀 难度:简单 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ...

  • 14. 最长公共前缀

    14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例1...

  • [LeetCode]14-最长公共前缀

    14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。例1:输...

  • 每日Leetcode—算法(2)

    14.最长公共前缀 输入: ["flower","flow","flight"],输出: "fl"输入: ["do...

  • 14. 最长公共前缀

    14. 最长公共前缀[https://leetcode-cn.com/problems/longest-commo...

网友评论

      本文标题:14. 最长公共前缀(easy)

      本文链接:https://www.haomeiwen.com/subject/jxqoaqtx.html