leetcode - python - 最长公共前缀

2018-09-05  本文已影响0人  creamelody
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

示例 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')
上一篇下一篇

猜你喜欢

热点阅读