点击打开链接
class Solution {
public:
bool isMatch(string s, string p) {
int slen = s.length();
int plen = p.length();
int num = 0;
for(int i=0; i<plen; i++){
if(p[i]=='*') num+=1;
}
if(plen-num > slen) return false;
vector<bool> pre(plen+1, false);
pre[0] = true;
for(int j=1; j<=plen; j++){
pre[j] = pre[j-1] &&(p[j-1]=='*');
}
for(int i=1;i<=slen;i++){
vector<bool> cur(plen+1, false);
for(int j=1; j<=plen; j++){
if(p[j-1] !='*'){
cur[j] = pre[j-1]&&(s[i-1]==p[j-1] || p[j-1]=='?');
}
else{
cur[j] = cur[j-1] || pre[j];
}
}
pre = cur;
}
return pre[plen];
}
};