每日一题-——最长公共子序列(LCS)与最长公共子串

Posted fighting25

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题-——最长公共子序列(LCS)与最长公共子串相关的知识,希望对你有一定的参考价值。

最长公共子序列(LCS)

技术图片

 

 思路:

技术图片

 

 代码:

def LCS(string1,string2):
    len1 = len(string1)
    len2 = len(string2)
    res = [[0 for i in range(len1+1)] for j in range(len2+1)]
    for i in range(1,len2+1):
        for j in range(1,len1+1):
            if string2[i-1] == string1[j-1]:
                res[i][j] = res[i-1][j-1]+1
            else:
                res[i][j] = max(res[i-1][j],res[i][j-1])
    return res,res[-1][-1]
print(LCS("helloworld","loop"))

最长公共子串

技术图片

 

 思路:

技术图片

 

 代码:

def LCstring(string1,string2):
    len1 = len(string1)
    len2 = len(string2)
    res = [[0 for i in range(len1+1)] for j in range(len2+1)]
    result = 0
    for i in range(1,len2+1):
        for j in range(1,len1+1):
            if string2[i-1] == string1[j-1]:
                res[i][j] = res[i-1][j-1]+1
                result = max(result,res[i][j])  
    return result
print(LCstring("helloworld","loop"))

链接:https://blog.csdn.net/ggdhs/article/details/90713154

 

以上是关于每日一题-——最长公共子序列(LCS)与最长公共子串的主要内容,如果未能解决你的问题,请参考以下文章

[LCS] nwHJ65 查找两个字符串a,b中的最长公共子串(LCS+KMP+substr暴力)

[LCS] nwHJ65 查找两个字符串a,b中的最长公共子串(LCS+KMP+substr暴力)

《LeetCode之每日一题》:106.最长公共子序列

最长公共子序列和最长公共子串

AcWing夏季每日一题--最长公共子序列

刷题之最长公共/上升子序列问题