class Solution:
def isMatch(self, s: str, p: str) -> bool:
m, n = len(s), len(p)
dp = [[False for j in range(n + 1)] for i in range(m + 1)]
dp[0][0] = True
def match(i, j):
if i == 0: return False
if p[j - 1] == '.':
return True
return s[i - 1] == p[j - 1]
for i in range(m + 1):
for j in range(1, n + 1):
if p[j - 1] == '*':
if match(i, j - 1):
dp[i][j] = dp[i][j - 2] or dp[i - 1][j]
else:
dp[i][j] = dp[i][j - 2]
else:
dp[i][j] = dp[i - 1][j - 1] if match(i, j) else False
return dp[m][n]
正则表达式匹配
最新推荐文章于 2024-03-11 09:55:03 发布