編寫一個函數(shù)來查找字符串?dāng)?shù)組中的最長公共前綴茄螃。
如果不存在公共前綴缝驳,返回空字符串 ""。
示例 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
方法二:使用內(nèi)置函數(shù)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函數(shù)
>>> 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')