1143最長共通部分列

アイデア:動的なプログラミングは、
dp[i][j]テキスト1、フロントを表しiテキスト2]との番号の前にj共通のサブシーケンス番号。
ここに画像を挿入説明
時間の複雑さ:O(N- 2
複雑スペース:O(MN)

def longestCommonSubsequence(str1, str2) -> int:
    m, n = len(str1), len(str2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]  # 初始值
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if str1[i - 1] == str2[j - 1]:
                dp[i][j] = 1 + dp[i-1][j-1]
            else:
                dp[i][j] = max(dp[i-1][j], dp[i][j-1])
        
    return dp[-1][-1]

公開された135元の記事 ウォンの賞賛5 ビュー7102

おすすめ

転載: blog.csdn.net/qq_27921205/article/details/104412520