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)