No dp ||  60 ms, faster than 87.73% of Python3   Double pointer question
```\nclass Solution:\n    def isMatch(self, s: str, p: str) -> bool:\n        i = j = 0  \n        back_j = -1  \n        match_i = 0   \n        m = len(s)\n  
```\nclass Solution:\n    def isMatch(self, s: str, p: str) -> bool:\n        i = j = 0  \n        back_j = -1  \n        match_i = 0   \n        m = len(s)\n        n = len(p)\n        while i < m:\n            if j < n and (s[i] == p[j] or p[j] == \'?\'):  \n                i += 1\n                j += 1\n            elif j < n and p[j] == \'*\':  \n                back_j = j  \n                match_i = i  \n                j += 1  \n            elif back_j != -1:  \n                j = back_j + 1\n                match_i += 1  \n                i = match_i\n            else:  \n                return False\n            print(p[j:])\n        return list(p[j:]).count(\'*\') == len(p[j:]) \n\n
['Python', 'Python3']