1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Solution { public: bool isMatch(string s, string p) { vector<vector<bool>> dp; dp.resize(s.length() + 1, vector<bool>(p.length() + 1));
dp[0][0] = true; for (int j = 1; j < p.length() + 1; j++) { if (p[j - 1] == '*') { dp[0][j] = dp[0][j - 1]; } } for (int i = 1; i < s.length() + 1; i++) { for (int j = 1; j < p.length() + 1; j++) { if (p[j - 1] == '*') { dp[i][j] = dp[i - 1][j - 1] || dp[i][j - 1] || dp[i - 1][j]; } else if (s[i - 1] == p[j - 1] || p[j - 1] == '?') { dp[i][j] = dp[i - 1][j - 1]; } else { dp[i][j] = false; } } } return dp[s.length()][p.length()]; } };
|