class Solution {
public:
/**
* 代碼中的類名、方法名、參數名已經指定,請勿修改,直接傳回方法規定的值即可
*
*
* @param str string字元串
* @param pattern string字元串
* @return bool布爾型
*/
bool match(string a, string b) {
// write code here
int n = a.size();
int m = b.size();
a = " " + a;
b = " " + b;
int f[1010][1010];
memset(f, 0, sizeof f);
f[0][0] =1;
for (int i = 0; i <= n ;i ++) {
for (int j = 1; j <= m; j ++) {
if (j + 1 <= m && b[j + 1] == '*') continue;
if (i >= 1 && b[j] != '*') {
f[i][j] |= f[i - 1][j - 1]
&& (a[i] == b[j] || b[j] == '.');
}
else if (b[j] == '*') {
f[i][j] = ((j - 2 >= 0 && f[i][j - 2]) ||
(f[i - 1][j] && (a[i] == b[j - 1] ||
b[j - 1] == '.')));
}
}
}
return f[n][m];
}
};