• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

dp-一致する文字列の数

date: 2021-05-01 excerpt: dp-一致する文字列の数について

tag: algorithmdp


dp-一致する文字列の数について

概要

  • rabbitがrabbbitのような文字列に対して並び順を維持した状態でマッチする数
  • dpとdfsでぐらいしか計算する方法が思いつかない

具体例

def solve(s, t):
    sl, tl = len(s), len(t)
    dp = [[0]*(sl+1) for _ in range(tl+1)]
    for w in range(sl+1):
        dp[0][w] = 1
    for h in range(1, tl+1):
        for w in range(1, sl+1):
            if s[w-1] == t[h-1]:
                dp[h][w] = dp[h-1][w-1] + dp[h][w-1]
            else:
                dp[h][w] = dp[h][w-1]
    return dp[-1][-1]

assert solve("rabbbit", "rabbit") == 3

計算のイメージ図

参考

  • Understand DP through question 115 - explanation with pictures
    • 図示が含まれており、わかりやすい


algorithmdp Share Tweet