Dynamic Programming21 sections · 916 units
Open in Course

LeetCode 115 Distinct Subsequences - Walkthrough

Counting occurrences

Count how many times tt appears as a subsequence of ss. Let dp[i][j]dp[i][j] = count for s[0..i1]s[0..i-1] and t[0..j1]t[0..j-1]. If s[i1]=t[j1]s[i-1] = t[j-1]: we can match this character (dp[i1][j1]dp[i-1][j-1]) or skip it (dp[i1][j]dp[i-1][j]). Total: dp[i][j]=dp[i1][j1]+dp[i1][j]dp[i][j] = dp[i-1][j-1] + dp[i-1][j]. If they don't match: must skip s[i1]s[i-1]. dp[i][j]=dp[i1][j]dp[i][j] = dp[i-1][j]. Example: s="rabbbit"s = \text{"rabbbit"}, t="rabbit"t = \text{"rabbit"}.

Answer: 33 (three ways to choose which 'b' to skip).