leetcode_44
Solutios
class Solution {
public:
bool isMatch(string s, string p) {
int n1 = s.size(), n2 = p.size();
vector<vector<bool>> dp(n1 + 1, vector<bool>(n2 + 1, false));
dp[0][0] = true;
// empty string matched with * prefix
for (int i = 1; i <= n2; i++) {
if (p[i - 1] != '*') break;
dp[0][i] = true;
}
for (int i = 1; i <= n1; i++)
for (int j = 1; j <= n2; j++) {
// p[j - 1] not used || p[j - 1] used
if (p[j - 1] == '*')
dp[i][j] = 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];
}
return dp[n1][n2];
}
};Last updated