【打卡】牛客网:BM76 正则表达式匹配

模板的:

关键思想是:

当pattern遇到*时,需要考虑两种情况:

  1. str的当前字符和pattern的*前的字符相同,例如str=“ab”,pattern=“abb*”,“b”和“b*”相同,有两种情况可以选择:
    1. pattern的“b*”发挥作用,即去掉str的当前字符,即考虑“a”和“abb*”。 //易错,不是考虑“a”和“ab”
    2. pattern的“b*”不发挥作用,即不去掉str的当前字符,即考虑“ab”和“ab”。
  2. str的当前字符和pattern的*前的字符不同,只有一种情况:
    1. “ac”和“ab*”的“c”和“b*”不同,“b*”不发挥作用,即不去掉str的当前字符,即考虑“ac”和“a”。

没有遇到*时,正常递归:

  1. 二者的当前字符相同,考虑二者的之前的,即dp[i][j]=dp[i-1][j-1];
  2. 二者的当前字符不相同,直接str不符合pattern,dp[i][j]=false;

此外,pattern还有“.”的匹配方式。“.”必须考虑一个字符,所以与判断字符相同的过程一样,即在上述过程中判断条件中“相同”改成“相同或匹配”即可。

初始化问题:

  1. pattern为空字符串,全部false
  2. str为空字符串,只有当pattern是【随意一个字符+*】,或者是任意个【随意一个字符+*】的组合时,dp为true。程序中的写法比较巧妙。

我的是dp[n2][n1]。

我习惯把pattern放在列(n2的for循环放在外面),str放在行(n1的for循环放在里面)。

然后对于每一个pattern元素,遍历所有str元素。

模板的是dp[n1][n2],对于每一个str元素,遍历所有pattern元素。结果都一样。

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param str string字符串 * @param pattern string字符串 * @return bool布尔型*/bool match(string str, string pattern) {// write code hereint n1 = str.length();int n2 = pattern.length();vector<vector<bool>> dp(n2+1,vector<bool>(n1+1,false));dp[0][0] = true;for(int j = 1; j <= n2; j++)if(pattern[j-1] == '*')dp[j][0] = dp[j-2][0];for(int j = 1; j <= n2; j++)for(int i = 1; i <= n1; i++){if(pattern[j-1] == '*')if(pattern[j-2] == str[i-1] || pattern[j-2] == '.')dp[j][i] = dp[j][i-1] || dp[j-2][i];  //满足其一即可elsedp[j][i] = dp[j-2][i];elseif(pattern[j-1] == str[i-1] || pattern[j-1] == '.')dp[j][i] = dp[j-1][i-1];}return dp[n2][n1];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言代码 变种水仙花数

变种水仙花数&#xff1a;把任意的数字从中间拆分成两个数字&#xff0c;如1461可拆分为1和461&#xff1b;14和61&#xff1b;146和1&#xff0c;若所有拆分后的乘积之和等于自身则是一个水仙花数。 14611*461 14*61 146*1 求出5位数中的所有水仙花数。 代码示例&#xf…

MySQL修炼手册1——初探MySQL:连接数据库并执行第一条SQL语句

写在开头 我们将深入学习MySQL的数据库连接和基本SQL语句&#xff0c;通过实际操作演示每个步骤&#xff0c;帮助读者更好地理解和掌握MySQL的基础知识。 1 数据库连接 1.1 连接到不同主机的数据库 连接远程数据库 mysql -h remote_host -u your_username -premote_host: …

【野火i.MX6ULL开发板】在MobaXterm平台利用Type-C线串口连接开发板

0、前言 参考文献&#xff1a; http://t.csdnimg.cn/9iRTm http://t.csdnimg.cn/Z0n60 问题&#xff1a;一直识别不出com口&#xff0c; 拟解决思路&#xff1a; 百度网盘重新下载Debian镜像&#xff0c;烧入full版镜像&#xff0c;随便换一下USB插口&#xff08;电脑主机上…

编程羔手(新手):什么时候用常量,什么时候用枚举类?

静态常量和枚举都是在编程中表示常量的方式&#xff0c;但它们在使用场景和目的上有一些不同。 静态常量&#xff1a; 使用静态常量通常是为了表示一些简单的常量值&#xff0c;例如字符串、数字等。适用于常量值在编译时已知&#xff0c;不需要动态生成的情况。通过静态常量可…

一个大场景下无线通信仿真架构思路(对比omnet与训练靶场)

2020年分析过omnet的源码&#xff0c;读了整整一年&#xff0c;读完之后收获不小&#xff0c;但是也遗憾的发现这个东西只适合实验室做研究的人用于协议的研发与测试&#xff0c;并不适合大场景&#xff08;军事游戏等&#xff09;的应用&#xff0c;因为其固有架构更侧重于每个…

PostGIS学习教程二十:3-D

PostGIS学习教程二十&#xff1a;3-D 注意&#xff1a;本文介绍许多PostGIS2.0及更高版本才支持的功能。 文章目录 PostGIS学习教程二十&#xff1a;3-D一、3-D几何图形二、3-D函数三、N-D索引 一、3-D几何图形 到目前为止&#xff0c;我们一直在处理2-D几何图形&#xff08;…

remote pdb使用记录

以前代码debug一直用原始的pdb&#xff0c;方便好用。最近接触的代码框架使用了ddp加速训练&#xff0c;导致pdb不好用了。 具体来说&#xff0c;在ddp训练时&#xff0c;用单卡训练&#xff0c;跟非ddp模式是一致的&#xff0c;python -m pdb xxx.py的模式也能正常用pdb。但是…

强化学习的数学原理学习笔记 - Actor-Critic

文章目录 概览&#xff1a;RL方法分类Actor-CriticBasic actor-critic / QAC&#x1f7e6;A2C (Advantage actor-critic)Off-policy AC&#x1f7e1;重要性采样&#xff08;Importance Sampling&#xff09;Off-policy PGOff-policy AC &#x1f7e6;DPG (Deterministic AC) 本…

C#,入门教程(13)——字符(char)及字符串(string)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(12)——数组及数组使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123918227 字符串的使用与操作是必需掌握得滚瓜烂熟的编程技能之一&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; C#语言实…

python接口自动化测试框架介绍

之前在项目中搞了一套jmeter jenkins git ant接口自动化测试框架&#xff0c;在项目中运行了大半年了&#xff0c;效果还不错&#xff0c; 最近搞了一套requests unittest ddt pymysql BeautifulReport的接口自动化测试框架&#xff0c; 测试用例在yaml文件中&#xff0c…

Java面向对象综合练习(拼图小游戏),用java图形化界面实现拼图小游戏

1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面&#xff0c;写一个项目&#xff0c;知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello&#xff0c;各位同学大家好。今天&#xff0c;我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…

MySQL语法及IDEA使用MySQL大全

在项目中我们时常需要写SQL语句&#xff0c;或简单的使用注解直接开发&#xff0c;或使用XML进行动态SQL之类的相对困难的SQL&#xff0c;并在IDEA中操控我们的SQL&#xff0c;但网上大都图方便或者觉得太简单了&#xff0c;完全没一个涵盖两个方面的讲解。 单表&#xff1a; …

并发程序设计--D11D12进程间通信

概念&#xff1a;就是进程和进程之间交换信息。 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存映射(mmap) 套接字&#xff08;socket&#xff09; 过时的IPC通信方式 System…

PCL 点云八叉树体素搜索

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前没有深入了解PCL的八叉树结构,趁着有时间了解了一下其特性,其中有一些非常有趣的操作。比如这里的体素搜索,我们有时候需要将点云进行体素化,这种做法有助于进行局部分析,自然而然就必须要快速获取某个点所…

如何在iOS手机上查看应用日志

引言 在开发iOS应用过程中&#xff0c;查看应用日志是非常重要的一项工作。通过查看日志&#xff0c;我们可以了解应用程序运行时的状态和错误信息&#xff0c;帮助我们进行调试和排查问题。本文将介绍两种方法来查看iOS手机上的应用日志&#xff0c;并提供相应的操作步骤。 …

文件批量归类,文件归类不再难

在快节奏的现代社会&#xff0c;时间就是金钱。使用【文件批量改名高手】软件&#xff0c;你可以在短时间内完成大量文件的归类工作&#xff0c;大大提高了工作效率。从此告别冗长、繁琐的文件整理过程&#xff0c;让你告别凌乱&#xff0c;让文件归类变得如此简单。 所需工具…

【算法分析与设计】数字连续的最长序列

题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a…

阿里巴巴秋招前端笔试题

单选题 下面的 JSX 代码中&#xff0c;哪一个无法达到预期的效果&#xff1f; A.<h2>Hello World</h2> B.<input type”checkbox”/> C.<div class”msg-box”>{msg}</div> D.<label htmlFor”name”>Leo</label> E.div styl…

ISPM 十四五规划

指导思想 坚定不移贯彻创新、协调、绿色、开放、共享的新发展理念&#xff0c;坚持稳中求进工作总基调 2035展望 展望2035年&#xff0c;基本实现新型工业化、信息化、城镇化、农业现代化&#xff0c;建成现代化经济体系。 重大科技基础设施 深入实施制造强国战略 相关关键…

近似点梯度法

最优化笔记——Proximal Gradient Method 最优化笔记&#xff0c;主要参考资料为《最优化&#xff1a;建模、算法与理论》 文章目录 最优化笔记——Proximal Gradient Method一、邻近算子&#xff08;1&#xff09;定义 二、近似点梯度法&#xff08;1&#xff09;迭代格式&…