Easy Solution || Dynamic Programming || Python || Recursion
Intuition\n_Dividing the main problem into sub problems and store the sub problems in memory_\n\n---\n\n\n# Approach\n\n### Constrain\n\'?\' Matches any single 
# Intuition\n_Dividing the main problem into sub problems and store the sub problems in memory_\n\n---\n\n\n# Approach\n\n### Constrain\n`\'?\'` Matches any single character.\n`\'*\'` Matches any sequence of characters (including the empty sequence).\n\n\n### Explanation\n\n###### Divide problems into Subproblems\n1. if both letters are same in s and p or if `p[index2]==\'?` -> we can increment both index in the strings.\n2. if the characters not match and `p[index2]!="*` -> directly return False\n3. if the character in `p[index2]=="*"` we have three options\n    1. take `"*"` as single character\n    2. take `"*"` as sequnce of character\n    3. take `"*"` as empty sequence\n\n\n---\n\n\n# Complexity\n- Time complexity:\n__O(n2)__\n\n- Space complexity:\n__O(n2)__\n\n---\n\n\n# Code\n```\nclass Solution:\n    def isMatch(self, s: str, p: str) -> bool:\n        dp = [[-1 for _ in range(len(p))]for _ in range(len(s))]\n        def helper(index1,index2):\n            if index1>=len(s) and index2>=len(p):\n                return True\n            if index1>=len(s) and index2<len(p):\n                while index2<len(p):\n                    if p[index2]!="*":\n                        return False\n                    index2+=1\n                return True\n            if index2>=len(p):\n                return False\n            if dp[index1][index2]!=-1:\n                return dp[index1][index2]\n            if s[index1]==p[index2] or p[index2]==\'?\':\n                dp[index1][index2]= helper(index1+1,index2+1)\n            elif s[index1]!=p[index2] and p[index2]!="*":\n                dp[index1][index2]=False\n            elif p[index2]==\'*\':\n                dp[index1][index2]= helper(index1+1,index2+1) or helper(index1,index2+1) or helper(index1+1,index2)\n            return dp[index1][index2]\n        return helper(0,0)\n```
['String', 'Dynamic Programming', 'Recursion', 'String Matching', 'Python3']