We use cookies for site analytics. Accept to help us understand how the site is used. See our Privacy Policy for details.
A hard dynamic programming problem, graded against 6 test cases (3 of them hidden).
Overlapping subproblems solved once and reused - the pattern candidates fear most.
Reach for it when you see: "Number of ways", "minimum/maximum cost", or a recursion that recomputes the same state.
More Dynamic Programmingproblems →dp[i][j] = true if s[0..i-1] matches p[0..j-1]
- If p[j-1] == '.' or p[j-1] == s[i-1]: dp[i][j] = dp[i-1][j-1]
- If p[j-1] == '*': either 0 occurrences (dp[i][j-2]) or 1+ (dp[i-1][j] if p[j-2] matches s[i-1])
The full reference solution in every supported language stays in the editor above - reveal it there once you have had a real attempt.
These apply to the pattern as a whole, not just this problem.