编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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')