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()]; 
    }
};
相关推荐
dot to one38 分钟前
C++ 渗透 数据结构中的二叉搜索树
数据结构·c++·算法·visual studio
蓝婷儿1 小时前
前端面试每日三题 - Day 29
前端·面试·职场和发展
好易学·数据结构2 小时前
可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)
数据结构·算法·leetcode·二叉树·力扣·序列化·牛客
uiop_uiop_uiop2 小时前
Xcode16.3配置越狱开发环境
职场和发展·蓝桥杯
_AaRong_2 小时前
经典密码学算法实现
算法·密码学
孙同学_3 小时前
【递归,搜索与回溯算法篇】专题(一) - 递归
算法·leetcode
Tummer83633 小时前
C语言与C++的区别
c语言·c++·算法
MSTcheng.3 小时前
【数据结构】算法的复杂度
数据结构·算法
了不起的杰4 小时前
【算法】:滑动窗口
算法
2301_807611494 小时前
47. 全排列 II
c++·算法·leetcode·回溯