美文网首页
求任意两字符串的最长公共子串长度,并找出所有最长公共子串

求任意两字符串的最长公共子串长度,并找出所有最长公共子串

作者: mosband | 来源:发表于2020-01-02 09:48 被阅读0次

一、代码

def lcstring(string1, string2):
    len1 = len(string1)
    len2 = len(string2)
    # dp[i][j]表示string1和string2中,以string1[i]/string2[j]结尾的最长公共子串长度
    # 当i,j皆大于0时,若string1[i - 1] 与 string2[j - 1] 相等
    # 则 dp[i][j] = dp[i - 1][j - 1] + 1
    # 否则 dp[i][j] = 0
    dp = [[0 for j in range(len2 + 1)] for i in range(len1 + 1)]
    # 用于保存当前阶段最长公共子串的长度
    max_len = 0
    # 用于保存长度为当前阶段max_len的所有公共子串
    lcstring_set = None
    for i in range(1, len1 + 1):
        for j in range(1, len2 + 1):
            if string1[i - 1] == string2[j - 1]:
                dp[i][j] = dp[i - 1][j - 1] + 1
                if dp[i][j] > max_len:
                    max_len = dp[i][j]
                    lcstring_set = set()
                    lcstring_set.add(string1[i - max_len:i])
                elif dp[i][j] == max_len:
                    lcstring_set.add(string1[i - max_len:i])
            else:
                dp[i][j] = 0

    return max_len, lcstring_set


max_len, lcstring_set = lcstring('habcdelloworldertyasdfd', 'loopabcdddqasdfdertyzsdfsv')
print(max_len)
print(lcstring_set)

2、运行结果

5
{'asdfd', 'derty'}

相关文章

  • 最长公共子串

    问题: 找出最长、连续的子字符串 思路: 遍历X、Y的所有子字符串,找出最长公共后缀,则最长公共后缀的长度就是最长...

  • 两个字符串的最长公共子串的长度

    题目 两个字符串的最长公共子串的长度例如:“ABCDGH”和“AEDFHR”的最长公共子串为“ADH”,长度为3。...

  • 每天一道算法题18

    【最长公共子序列,子串】给定两个字符串上str1 和 str2, 求两个字符的最长公共子序列和最长公共子串。 最长...

  • 求任意两字符串的最长公共子串长度,并找出所有最长公共子串

    一、代码 2、运行结果 5{'asdfd', 'derty'}

  • 【python】求两个字符串的公共字串?

    题目:找出两个字符串的最长公共字串,例如字符串“abccade”与字符串“dgcadde”的最长公共子串为“cad...

  • 最长公共 / 对称字串

    求最长对称字串是求最长公共子串的变形.. (๑˘ ˘๑) 最长公共子串 Longest Common Subseq...

  • LCS 问题求解

    LCS : longest common substring 即最长公共子串 LCS 问题就是求两个字符串最长公共...

  • 最长公共子序列问题解析

    问题解读 最长公共子序列问题,就是找出两个字符串中,存在的最长的子序列 什么是子序列呢?子序列不同于公共子串,子串...

  • 2019-10-29

    求2个字符串的最长公共子序列和最长公共子字符串 一. 最长公共子序列 定义: 一个数列S,如果分别是两个或多个已知...

  • 求两个字符串中最长子串

    编码需求 找出指定的2个字符串的最长公共子串,如果存在多个等长的公共子串,则请按字母序排序,依次打印出所有公共子串...

网友评论

      本文标题:求任意两字符串的最长公共子串长度,并找出所有最长公共子串

      本文链接:https://www.haomeiwen.com/subject/poizyctx.html