最长公共子序列

Posted ivyharding

tags:

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

给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB

则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA

 

 技术图片

代码:

def findLCS(A, n, B, m):
        # write code here
        record = 0
        maxNum = 0
        result = []
        
        for i in range(n):
            for j in range(m):
                if A[i] == B[j]:
                    if A[i] not in result:
                        record += 1
#                         print(A[i])
                        result.append(A[i])
                    if maxNum < record:
                        maxNum = record
        return maxNum,"".join(result)

if __name__ == "__main__":
    A = "BDCABA"
    n = 6
    B = "ABCBDAB"
    m =7
    print(findLCS(A, n, B, m))

 

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

最长公共子序列的应用

C语言实现最长公共子串与最长公共子序列

最长递增子序列 && 最大子序列最长递增子序列最长公共子串最长公共子序列字符串编辑距离

codevs 1862 最长公共子序列(求最长公共子序列长度并统计最长公共子序列的个数)

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

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