Longest Common Prefix

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)

  

 

原文地址:https://www.cnblogs.com/xlqtlhx/p/8046590.html