美文网首页
leetcode - python - 最长公共前缀

leetcode - python - 最长公共前缀

作者: creamelody | 来源:发表于2018-09-05 17:05 被阅读0次
    编写一个函数来查找字符串数组中的最长公共前缀。
    如果不存在公共前缀,返回空字符串 ""。

    示例 1:
    输入: ["flower","flow","flight"]
    输出: "fl"

    示例 2:
    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明:所有输入只包含小写字母 a-z 。

    方法一:遍历
    def longestCommonPrefix(strs):
        prefix=''
        i=0
        while True:
            try:
                tmp=strs[0][i]
                for item in strs:
                    if item[i]!=tmp:
                        return prefix
            except:
                return prefix
            prefix+=tmp
            i+=1
        return prefix
    
    方法二:使用内置函数zip、set、enumerate
    def longestCommonPrefix(strs):
        prefix=''
        for _,item in enumerate(zip(*strs)):
            if len(set(item))>1:
                return prefix
            else:
                prefix+=item[0]
        return prefix
    
    ##测试
    >>> longestCommonPrefix(['flower','floor','floaer','flsaa'])
    'fl'
    
    ##zip和enumerate函数
    >>> a=[1,2,3]
    >>> b=[4,5,6]
    >>> zip(a,b)
    [(1, 4), (2, 5), (3, 6)]
    >>> c=[1,5,5]
    >>> zip(a,b,c)
    [(1, 4, 1), (2, 5, 5), (3, 6, 5)]
    >>> strs=["flower","flow","flight"]
    >>> zip(*strs)
    [('f', 'f', 'f'), ('l', 'l', 'l'), ('o', 'o', 'i'), ('w', 'w', 'g')]
    >>> for i,element in enumerate(zip(*strs)):
    ...     print i,element
    ... 
    0 ('f', 'f', 'f')
    1 ('l', 'l', 'l')
    2 ('o', 'o', 'i')
    3 ('w', 'w', 'g')
    

    相关文章

      网友评论

          本文标题:leetcode - python - 最长公共前缀

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