
代码 :
class Solution {public:bool isMatch(string s, string p) {int n = s.size(), m = p.size();s = ' ' + s, p = ' ' + p;// s(0, i) && p(0, j)vector<vector<bool>> dp(n+1, vector<bool>(m+1));dp[0][0] = true;for(int i = 0; i <= n; i ++) {for(int j = 1; j <= m; j ++) {if(j + 1 <= m && p[j+1] == '*') continue; // *前缀 需要和* 一起使用if(p[j] != '*')dp[i][j] = (s[i] == p[j] || p[j] == '.') && i && dp[i-1][j-1];// v -- va* dp[i][j-2]// va -- va* dp[i-1][j-2]else if(p[j] == '*')dp[i][j] = dp[i][j-2] || i && (dp[i-1][j] && (s[i] == p[j-1] || p[j-1] == '.'));}}return dp[n][m];}};
