(1)递归
class Solution {
public:
bool helper(string &s, string &p,int i,int j) {
if(i>=s.length() && j>=p.length())
return true;
if(i<s.length() && j>=p.length())
return false;
if(j+1<p.length() && p[j+1] == '*') {
if(i<s.length() && (s[i]==p[j] || p[j] == '.'))
return helper(s,p,i+1,j+2)
|| helper(s,p,i,j+2)
|| helper(s,p,i+1,j);
else return helper(s,p,i,j+2);
}
if(i<s.length() && (s[i]==p[j] || p[j] == '.'))
return helper(s,p,i+1,j+1);
return false;
}
bool isMatch(string s, string p) {
return helper(s,p,0,0);
}
};