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()]; 
    }
};
相关推荐
uesowys几秒前
Apache Spark算法开发指导-Factorization machines classifier
人工智能·算法
TracyCoder12319 分钟前
LeetCode Hot100(26/100)——24. 两两交换链表中的节点
leetcode·链表
季明洵27 分钟前
C语言实现单链表
c语言·开发语言·数据结构·算法·链表
shandianchengzi32 分钟前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
I_LPL32 分钟前
day26 代码随想录算法训练营 回溯专题5
算法·回溯·hot100·求职面试·n皇后·解数独
Yeats_Liao33 分钟前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
cpp_250137 分钟前
P9586 「MXOI Round 2」游戏
数据结构·c++·算法·题解·洛谷
浅念-41 分钟前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
有时间要学习1 小时前
面试150——第五周
算法·深度优先
晚霞的不甘2 小时前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频