lintcode_78最长公共前缀

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode_78最长公共前缀相关的知识,希望对你有一定的参考价值。

给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]

 

以上是关于lintcode_78最长公共前缀的主要内容,如果未能解决你的问题,请参考以下文章

lintcode_79最长公共字串

[JAVA]寻找最长公共前缀

Leetcode_14最长公共前缀

leetcode_字节跳动_挑战字符串_最长公共前缀

LeetCode刷题记录_最长公共前缀

leetcode_最长公共前缀