"""
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。
'.' 匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。
"""
# 自顶向下
def isMatch(s, p):
memo = {}
def dp(i,j):
if (i, j) not in memo:
if j== len(p):
ans = i == len(s)
else:
first_math = i < len(s) and p[j] in {s[i], '.'}
if j+1 < len(p) and p[j+1] == "*":
ans = dp(i, j+2) or first_math and dp(i+1, j)
else:
ans = first_math and dp(i+1, j+1)
memo[i, j] = ans
return memo[i,j]
return dp(0, 0)
10_正则表达式匹配
最新推荐文章于 2024-07-29 22:28:05 发布