0
点赞
收藏
分享

微信扫一扫

蓝桥杯算法提高VIP-最长公共子序列

清冷的蓝天天 2022-03-12 阅读 69

题目描述

给定两个字符串,寻找这两个字串之间的最长公共子序列。

输入

输入两行,分别包含一个字符串,仅含有小写字母。

输出

最长公共子序列的长度。

样例输入

abcdgh
aedfhb

样例输出

3

def f(a,b):
    srca = [0]
    srcb = [0]
    for i in a:
        srca.append(i)
    for i in b:
        srcb.append(i)
    n = len(srca)
    m = len(srcb)
    dp=[[0]*m for _ in range(n)]
    for i in range(1,n):
        for j in range(1,m):
            if srca[i] == srcb[j]:
                dp[i][j]=dp[i-1][j-1]+1
            else:
                dp[i][j]=max(dp[i-1][j],dp[i][j-1])
    return dp[n-1][m-1]

if __name__ == '__main__':
    src1 = input()
    src2 = input()
    print(f(src1,src2))
    
举报

相关推荐

0 条评论