1. 程式人生 > >lintcode python ——最長公共字首(LCP)

lintcode python ——最長公共字首(LCP)

問題描述:給k個字串,求出他們的最長公共字首(LCP)

樣例

在 "ABCD" "ABEF" 和 "ACEF" 中,  LCP 為 "A"

在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 為 "ABC"

class Solution:
    def longestCommonPrefix(self, strs):
        n = 0
        p = []
        k = len(strs)
        if k == 0:     #排除strs為空的情況
            return ""
        l2 = []
        for v in strs: 
            l2.append(len(v)) #轉化為長度列表並儲存
        m = min(l2)   
        if m == 0:   #排除單個字串為空的情況
            return ""
        while(True):
            l = []
            z = []
            for i in range(k):
                l.append(strs[i][n])
                z.append(1)
            l1 = zip(l,z)
            d = dict(l1)    #轉化為字典,合併相同字元
            if(len(d) == 1):#如果字典長度為1,說明字首相同
                n = n + 1
                p.append(l[0])
            else:
                t = ''.join(p)   #連線字元
                return t
            if n == m:
                t = ''.join(p)
                return t