Leetcode

LeetCode #10 正则表达式匹配

2020-02-05  本文已影响0人  HU兔兔
class Solution {
public:
    bool isMatch(string s, string p) {
        bool dp[s.size()+1][p.size()+1];
        int i,j;
        i=1;
        j=1;
        dp[0][0]=true;
        while(j<=p.size()){
              dp[0][j]=p[j-1]=='*'?dp[0][j-2]:false;
              j++;
        }
        while(i<=s.size()){
            dp[i][0]=false;
            j=1;
            while(j<=p.size()){
                if(s[i-1]==p[j-1]||p[j-1]=='.'){
                    dp[i][j]=dp[i-1][j-1];
                }
                else if(p[j-1]=='*'){
                    if(p[j-2]=='.'||p[j-2]==s[i-1]){
                        dp[i][j]=dp[i][j-2]||dp[i-1][j];
                    }
                    else{
                        dp[i][j]=dp[i][j-2];
                    }
                }
                else{
                    dp[i][j]=false;
                }
                j++;
            }
            i++;
        }
        return dp[s.size()][p.size()];
    }
};
上一篇下一篇

猜你喜欢

热点阅读