給定三個字符串 A、B、C,長度分別為 m、n、m+n。判斷 C 是否可以由 A 和 B 的字符保持各自相對順序交織形成。
定義 dp[i][j] 表示 A 的前 i 個字符和 B 的前 j 個字符能否交織形成 C 的前 i+j 個字符。
dp[0][0] = true
dp[i][j] = (dp[i-1][j] && A[i-1] == C[i+j-1]) ||
(dp[i][j-1] && B[j-1] == C[i+j-1])
dp[i][0]:僅用 A 的前 i 個匹配 C 的前 i 個。dp[0][j]:僅用 B 的前 j 個匹配 C 的前 j 個。i+j-1。詳細講解:Zipper 字符串交織 DP 詳解