class Solution(object):
def isMatch(self, s: str, p: str) -> bool:
if not p:
return not s
first_match = bool(s) and p[0] in {s[0], '.'} # 匹配第一个字符
# 当*为p第二个元素时,匹配*前一个元素为0次,或1次
# 为1次时,需满足:s, p第一个元素匹配上,然后删除s第一个元素,继续匹配后续元素
if len(p) >= 2 and p[1] == '*':
return (self.isMatch(s, p[2:]) or first_match and self.isMatch(s[1:], p))
else:
return first_match and self.isMatch(s[1:], p[1:])
LeetCode每日一题T10. 正则表达式匹配(难)——(回溯)
最新推荐文章于 2024-08-25 17:36:33 发布