44. 通配符匹配

Hard

思路

看到这道题,想到了之前做过的一道dp题: 10.正则表达匹配

仔细阅读发现这题和之前那一题是差不多的,使用动态规划求解

尝试写一下代码,AC!

代码

python3

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
      dp = [[False for _ in range(len(p) + 1)] for _ in range(len(s) + 1)] 
      dp[0][0] = True
      for i in range(1,len(p)+1):
        if p[i-1] != '*':
          break
        dp[0][i] = True

      for i in range(1, len(s) + 1):
        for j in range(1, len(p) + 1):
          if s[i-1] == p[j-1] or p[j-1] == '?':
            dp[i][j] = dp[i-1][j-1]
          else:
            if p[j-1] == '*':
              dp[i][j] = dp[i-1][j] or dp[i][j-1]
      return dp[-1][-1]