1# Runtime: 1580 ms (Top 22.92%) | Memory: 22.4 MB (Top 66.92%)2class Solution:3def isMatch(self, s: str, p: str) -> bool:4m = len(s)5n = len(p)67dp = [[False] * (n + 1) for i in range(m + 1)]89dp[0][0] = True1011for j in range(len(p)):12if p[j] == "*":13dp[0][j + 1] = dp[0][j]1415for i in range(1, m + 1):16for j in range(1, n + 1):17if p[j - 1] == "*":18dp[i][j] = dp[i - 1][j] or dp[i][j - 1]1920elif s[i - 1] == p[j - 1] or p[j - 1] == "?":21dp[i][j] = dp[i - 1][j - 1]2223return dp[-1][-1]