class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:
return ""
for i,letter in enumerate(zip(*strs)):
if(len(set(letter))>1):
return strs[0][:i]
return min(strs)
def isSamechar(strs,pos):
if(len(strs[0])<pos):
return False
else:
for i in range(1,len(strs)):
if len(strs[i])<=pos or strs[i][pos]!=strs[0][pos]:
return False
return True
def longestCommon(strs,left ,right):
if left==right:
if isSamechar(strs,left):
return strs[0][left]
else:
return ""
mid=left+(right-left)/2
if(len(longestCommon(strs,left,mid))==(right-left)/2+1):
return longestCommon(strs,left,mid)+longestCommon(strs,mid+1,right)
else:
return longestCommon(strs,left,mid)
def longestCommonPrefix(strs):
res=longestCommon(strs,0,len(strs[0])-1)
return res
test=['abc','ab','abcd']
print longestCommonPrefix(test)