Skip to main content
← Problem catalogue Understand the pattern. Try it yourself. Review the solution. Practice this pattern →
Hard Dynamic Programming Medium frequency Solution Available Practice Mode

Regular Expression Matching LeetCode Solution

Tags: #String #Dynamic Programming #Recursion

Approach Summary

dp[i][j] = true if s[0..i) matches p[0..j). Handle "." (matches any) and "*" (matches zero or more of the preceding char).

Practice Mode

Solve it yourself before revealing the code

DSA interviews test reasoning from brute force to optimal. Think through the constraints first.

Algorithmic Pattern

Master the Dynamic Programming Pattern

View Pattern Guide →

Study the core invariant, step-by-step decision framework, and common interview traps for the Dynamic Programming pattern.

Framework: Dynamic Programming • Interview Prep: Tested at FAANG • Explore all Dynamic Programming problems & invariants →

How to Recognize This Pattern

  • Pattern with "." and "*"
  • "*" means zero or more: dp[i][j] = dp[i][j-2] (zero) OR match+dp[i-1][j] (more)

Complexity Analysis

Time Complexity

O(m × n)

Space Complexity

O(m × n)

Tags

String Dynamic Programming Recursion

Frequently Asked Questions

What is the optimal time and space complexity for Regular Expression Matching?
The optimal solution for Regular Expression Matching achieves O(m × n) runtime complexity and requires O(m × n) auxiliary space. Time Complexity: O(m × n) — each element or state is traversed and evaluated in bounded amortized time without redundant reprocessing. Space Complexity: O(m × n) — allocated for auxiliary tracking structures, recursion call stack, or state caches.
How do I identify that Regular Expression Matching requires the Dynamic Programming pattern?
In technical interviews, look for key problem signals: Pattern with "." and "*"; "*" means zero or more: dp[i][j] = dp[i][j-2] (zero) OR match+dp[i-1][j] (more). Recognizing these invariants allows you to bypass naive brute-force exhaustive search in favor of Dynamic Programming strategy.
What critical edge cases must be handled in Regular Expression Matching?
Essential edge cases to verify include: Key recognition trigger: Pattern with "." and "*".; Constraint condition: "*" means zero or more: dp[i][j] = dp[i][j-2] (zero) OR match+dp[i-1][j] (more).; Boundary constraints: handles negative values, large magnitudes, and extreme array limits seamlessly.; Suboptimal inputs: runs strictly within the O(m × n) time budget without stack overflow or time limit exceeded.. Always walk through these scenarios with your interviewer before coding.
Which tech companies frequently ask Regular Expression Matching?
Regular Expression Matching is a Hard-difficulty question tagged with medium recurrence. It is actively asked in technical screening and onsite interview loops at Google, Facebook, Amazon, Microsoft.
Buy me a coffee
Daily Practice
0/0