目录

三个月算法进阶--day55

正则匹配

动态规划问题

python |=

记录

leetcode剑指offer第49题正则表达式匹配

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        m = len(s)
        n = len(p)
        ans = [[False] * (n + 1) for _ in range(m+1)] 

        for i in range(m+1):
            for j in range(n+1):
                if j == 0:
                    ans[i][j] = i == 0
                else:
                    if p[j-1] != "*":
                        if i > 0 and (s[i-1] == p[j-1] or p[j-1] == '.'):
                            ans[i][j] = ans[i-1][j-1]
                    else:
                        if j >= 2:
                            ans[i][j] |= ans[i][j-2]
                        if i > 0 and j >= 2 and (s[i-1] == p[j-2] or p[j-2] == '.'):
                            ans[i][j] |= ans[i-1][j]

        return ans[m][n]