Leetcode Hot100 第65题 10.正则表达式匹配

cpp 复制代码
class Solution {
public:
    bool isMatch(string s, string p) {
        s = " " + s;
        p = " " + p;
        // 加了上面这个就可以避免为"c*xxx"进行特殊初始化
        // dp[i][j]表示s[0..i-1]与p[0...j-1]是否可以匹配
        vector<vector<bool>> dp(s.size()+1,vector<bool>(p.size()+1,false));
        dp[0][0] = true;
        for(int i=1;i<=s.size();i++){
            for(int j=1;j<=p.size();j++){
                if(p[j-1]==s[i-1]){
                    dp[i][j]=dp[i-1][j-1];
                }else if(p[j-1]=='*'){
                    if(s[i-1]==p[j-2]||p[j-2]=='.'){
                        dp[i][j] = dp[i][j-2]||dp[i][j-1]||dp[i-1][j]; //不匹配 匹配一个 匹配多个
                    }else{
                        dp[i][j] = dp[i][j-2];
                    }
                }else if(p[j-1]=='.'){
                    dp[i][j] = dp[i-1][j-1];
                }else{
                    dp[i][j]=false;
                }
            }
        }
        return dp[s.size()][p.size()]; 
    }
};
相关推荐
数据捕手199701080181 分钟前
深度剖析淘宝拍立淘按图搜索商品API技术规范
算法·图搜索算法
James. 常德 student28 分钟前
动态规划感悟1
算法·动态规划
float_六七38 分钟前
在处理欧拉函数时如何使用逆元
算法·数论·欧拉函数
梭七y1 小时前
leetcode日记(106)买卖股票的最佳时机Ⅲ
算法·leetcode·职场和发展
ん贤1 小时前
优先队列 priority_queue详解
java·数据结构·c++·算法·优先队列
蒙帕智能运维2 小时前
蒙帕视角|Transformer:AI大模型的基石(二)
算法
职豚求职小程序2 小时前
移动笔试丨中国移动笔试2025届笔试考什么?运营商春招攻略、考点技巧|附真题秘籍、题型介绍、面试攻略、求职建议
面试·职场和发展
玉树临风ives2 小时前
2023 CSP-J 题解
c++·算法·图论·csp
砂糖はいかがですか。2 小时前
用数组模拟循环队列
数据结构·算法
Hardess-god2 小时前
RAMS数据处理程序—垂直剖面分析程序
人工智能·算法