您的位置:首页 > 博客中心 > 互联网 >

lintcode_78最长公共前缀

时间:2022-05-04 03:33

给k个字符串,求出他们的最长公共前缀(LCP)

 

样例

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

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

class Solution:
    """
    @param: strs: A list of strings
    @return: The longest common prefix
    """
    def longestCommonPrefix(self, strs):
        if not strs: #strs为空要求返回""
            return ""
        if len(strs)<2: 
            return strs[0]
        
        for j in range(len(strs[0])):
            for i in range(1,len(strs)):
                if not strs[i]: #列表中存在空元素则返回"",无公共前缀
                    return ""
                elif strs[0][j] != strs[i][j]:
                    return strs[0][:j]
        return strs[0]

以第一个元素作为参照与后面每一个元素比较

 

九章参考解:

class Solution:
    # @param strs: A list of strings
    # @return: The longest common prefix
    def longestCommonPrefix(self, strs):
        if len(strs) <= 1:
            return strs[0] if len(strs) == 1 else ""
        end, minl = 0, min([len(s) for s in strs])
        while end < minl:
            for i in range(1, len(strs)):
                if strs[i][end] != strs[i-1][end]:
                    return strs[0][:end]
            end = end + 1
        return strs[0][:end]

 

本类排行

今日推荐

热门手游