class Solution {
public:
bool isMatch(string s, string p) {
return isMatchMeta(s,p,0,0);
}
bool isMatchMeta(string s, string p,int i,int j) {
if(i>s.size() || j>p.size()){
return false;
}
if(i==s.size() && j==p.size()){
return true;
}
while(j+3<p.size() &&p[j]==p[j+2] && p[j+1]=='*' && p[j+3]=='*'){
j+=2;
}
if(j+1<p.size() && p[j+1]=='*'){
if(s[i]==p[j] || p[j]=='.'){
bool a = isMatchMeta(s,p,i+1,j);
bool b = isMatchMeta(s,p,i,j+2);
return a||b;
}else{
return isMatchMeta(s,p,i,j+2);
}
}
if(s[i]==p[j] || p[j]=='.'){
return isMatchMeta(s,p,i+1,j+1);
}
return false;
}
};
匹配效率还有点低,要优化。