leetcode10

def isMatch(s, p):
    m,n = len(s),len(p)
    dp = [[False for i in range(m+1)] for j in range(n+1)]
    dp[0][0] = True
    for i in range(0,n):
        for j in range(1,m):
            if s[j] == p[i] or p[i] == '.' and i >0:
                dp[i][j] = dp[i-1][j-1]
            elif p[i-1] == '*':
                if (i == 0) or (s[i-1] != p[j-2] and p[j-2] != '.'):
                    dp[i][j] = dp[i][j - 2]
                else:
                    dp[i][j] = dp[i-1][j] or dp[i][j-1] or dp[i][j-2]
    print(dp[n][m])

 

你可能感兴趣的:(DP,算法-leetcode)