点击打开链接
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]; } };