微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

leetcode 10. Regular Expression Matchingdp

题目:https://leetcode.com/problems/regular-expression-matching/description/
题意:给你字符串s、p,让判断s是否符合p的正则匹配

‘.’ Matches any single character.
‘*’ Matches zero or more of the preceding element.
思路:令dp[i][j]代表s[0…i]和p[0…j]能否匹配,这里“*”难处理,代表0个字符和大于0个的情况
代码

class Solution {
public:
    bool dp[1005][1005];
    bool isMatch(string s,string p) {
        memset(dp,false,sizeof(dp));
        dp[0][0] = true;
        for(int i = 0;i <= s.length();i++){
            for(int j = 1;j <= p.length();j++){
                if(i >= 1 && s[i-1] == p[j-1] || p[j-1] == '.')
                    dp[i][j] = dp[i][j] || dp[i-1][j-1];
                if(p[j-1] == '*'){
                    if(i >= 1 && (s[i - 1] == p[j - 2] || p[j - 2] == '.'))//>0
                        dp[i][j] = dp[i][j] || dp[i - 1][j];
                    dp[i][j] =  dp[i][j] || dp[i][j - 2];//0
                }
            }
        }
        return dp[s.size()][p.size()];
    }
};

原文地址:https://www.jb51.cc/regex/357901.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐