1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution { public: bool isMatch(string s, string p) { return isMatch(s, s.length(), p, p.length()); }
bool isMatch(const string &s, int m, const string &p, int n) { if (m == 0 && n == 0) return true; if (m != 0 && n == 0) return false; if (m == 0 && n != 0) return p[n - 1] == '*' && isMatch(s, m, p, n - 2); if (p[n - 1] == '*') return (s[m - 1] == p[n - 2] || p[n - 2] == '.') && isMatch(s, m - 1, p, n) || isMatch(s, m, p, n - 2); return (s[m - 1] == p[n - 1] || p[n - 1] == '.') && isMatch(s, m - 1, p, n - 1); } };
|