comefrom: <doocs>0010.Regular Expression Matching_1.py
code: def isMatch( s: str, p: str) -> bool:
      m, n = len(s), len(p)
      if n == 0:
          return m == 0
      dp = [[False] * (n + 1) for _ in range(m + 1)]
      dp[0][0] = True
      for j in range(2, n + 1):
          if p[j - 1] == '*':
              dp[0][j] = dp[0][j - 2]
      for i in range(1, m + 1):
          for j in range(1, n + 1):
              if s[i - 1] == p[j - 1] or p[j - 1] == '.':
                  dp[i][j] = dp[i - 1][j - 1]
              elif p[j - 1] == '*':
                  if p[j - 2] == '.' or p[j - 2] == s[i - 1]:
                      dp[i][j] = dp[i][j - 2] or dp[i - 1][j]
                  else:
                      dp[i][j] = dp[i][j - 2]
      return dp[-1][-1]
masked: def sample_funcname ( var_0 : str , var_2 : str ) -> bool :
      var_5 , var_6 = len ( var_0 ) , len ( var_2 )
      if var_6 == 0 :
          return var_5 == 0
      var_12 = [ [ False ] * ( var_6 + 1 ) for var_10 in range ( var_5 + 1 ) ]
      var_12 [ 0 ] [ 0 ] = True
      for var_15 in range ( 2 , var_6 + 1 ) :
          if var_2 [ var_15 - 1 ] == '*' :
              var_12 [ 0 ] [ var_15 ] = var_12 [ 0 ] [ var_15 - 2 ]
      for var_17 in range ( 1 , var_5 + 1 ) :
          for var_15 in range ( 1 , var_6 + 1 ) :
              if var_0 [ var_17 - 1 ] == var_2 [ var_15 - 1 ] or var_2 [ var_15 - 1 ] == '.' :
                  var_12 [ var_17 ] [ var_15 ] = var_12 [ var_17 - 1 ] [ var_15 - 1 ]
              elif var_2 [ var_15 - 1 ] == '*' :
                  if var_2 [ var_15 - 2 ] == '.' or var_2 [ var_15 - 2 ] == var_0 [ var_17 - 1 ] :
                      var_12 [ var_17 ] [ var_15 ] = var_12 [ var_17 ] [ var_15 - 2 ] or var_12 [ var_17 - 1 ] [ var_15 ]
                  else :
                      var_12 [ var_17 ] [ var_15 ] = var_12 [ var_17 ] [ var_15 - 2 ]
      return var_12 [ - 1 ] [ - 1 ]
  