regular expression matching

🏠
 1class Solution(object):
 2    def isMatch(self, s, p):
 3        def m(s, p):
 4            if not p:
 5                return not s
 6
 7            fm = s and p[0] in {s[0], "."}
 8            star_match = len(p) >= 2 and p[1] == "*"
 9
10            if star_match:
11                return fm and m(s[1:], p) or m(s, p[2:])
12            else:
13                return fm and m(s[1:], p[1:])
14        return m(s, p)
15
16print(Solution().isMatch("miss", "mis*"))