#+ANKI_DECK: study_deck_02 * TODO 0010. Regular Expression Matching :hard: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0010. Regular Expression Matching][0010. Regular Expression Matching]] :END: Given an input string ~s~ and a pattern ~p~, implement regular expression matching with support for ~'.'~ and ~'*'~ where: - ~'.'~ Matches any single character.​​​​ - ~'*'~ Matches zero or more of the preceding element. Return a boolean indicating whether the matching covers the entire input string (not partial). *Example 1:* #+begin_src Input: s = "aa", p = "a" Output: false Explanation: "a" does not match the entire string "aa". #+end_src *Example 2:* #+begin_src Input: s = "aa", p = "a*" Output: true Explanation: '*' means zero or more of the preceding element, 'a'. Therefore, by repeating 'a' once, it becomes "aa". #+end_src *Example 3:* #+begin_src Input: s = "ab", p = ".*" Output: true Explanation: ".*" means "zero or more (*) of any character (.)". #+end_src *Constraints:* - ~1 <= s.length <= 20~ - ~1 <= p.length <= 20~ - ~s~ contains only lowercase English letters. - ~p~ contains only lowercase English letters, ~'.'~, and ~'*'~. - It is guaranteed for each appearance of the character ~'*'~, there will be a previous valid character to match. ** TODO Approach Write your approach here. ** TODO Python #+begin_src python class Solution: def isMatch(self, s: str, p: str) -> bool: #+end_src ** TODO C++ #+begin_src cpp class Solution { public: bool isMatch(string s, string p) { } }; #+end_src