码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 10. Regular Expression Matching

时间:2019-04-25 17:32:02      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:als   ++   http   public   etc   mat   express   turn   tco   

https://leetcode.com/problems/regular-expression-matching/

class Solution {
public:
    bool isMatch(string s, string p) {
        /*
        动态规划问题:
        dp[i][j]代表s[0...i-1],和p[0...j-1]是否匹配
        p[j-1]=='.'时,dp[i][j]=dp[i-1][j-1]
        p[j-1]=='*'时,dp[i][j]=dp[i][j-2] | (dp[i-1][j] & (p[j-2]=='.' | s[i-1]==p[j-2]))对应0字符、有字符
        其他情况,dp[i][j]=dp[i-1][j-1] & s[i-1]==p[j-1]
        */
        const int Ls=s.size(),Lp=p.size();
        
        bool dp[Ls+1][Lp+1];
        dp[0][0]=true;
        for(int j=1;j<=Lp;++j){
            if(p[j-1]=='*')
                dp[0][j]=dp[0][j-2];
            else
                dp[0][j]=false;
        }
        for(int i=1;i<=Ls;++i){
            dp[i][0]=false;
            for(int j=1;j<=Lp;++j){
                if(p[j-1]=='.')
                    dp[i][j]=dp[i-1][j-1];
                else if(p[j-1]=='*')
                    dp[i][j]=dp[i][j-2] | (dp[i-1][j] & (p[j-2]=='.' | s[i-1]==p[j-2]));
                else
                    dp[i][j]=dp[i-1][j-1] & s[i-1]==p[j-1];
            }
        }
        return dp[Ls][Lp];
    }
};

Leetcode 10. Regular Expression Matching

标签:als   ++   http   public   etc   mat   express   turn   tco   

原文地址:https://www.cnblogs.com/ximelon/p/10769688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!