leetcode+ Dp题目,字符串匹配

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

猜你喜欢

转载自blog.csdn.net/u013554860/article/details/80754684