LeetCode热题Hot100 - 正则表达式匹配

一刷~

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

  • '.' 匹配任意单个字符
  • '*' 匹配零个或多个前面的那一个元素

所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

有几个用例超时,容我三思。

目前的思路:递归判断是否满足匹配条件。

class Solution:def isMatch(self, s: str, p: str) -> bool:if len(s) == 0 and len(p) == 0:return Trueif len(s) == 0 and len(p) > 1 and p[1] == "*":return self.isMatch(s, p[2:])if len(s) * len(p) == 0:return Falseif len(p) == 1:if p[0] == ".":return len(s) == 1else:return len(s) == 1 and s[0] == p[0]else:if p[1] == "*":if p[0] == ".":return self.isMatch(s, p[2:]) or self.isMatch(s[1:], p)else:return self.isMatch(s, p[2:]) or (s[0] == p[0] and self.isMatch(s[1:], p))else:if p[0] == ".":return self.isMatch(s[1:], p[1:])else:return p[0] == s[0] and self.isMatch(s[1:], p[1:])

定睛一看s、p的长度都不超过20,想到用二维动态规划,果然过了,但是动态方程推导过程蛮坎坷的,两个小时过去了- -

 

class Solution:def isMatch(self, s: str, p: str) -> bool:m, n = len(s), len(p)dp = [[0]*(n+1) for i in range(m+1)]dp[0][0] = 1for i in range(1, n+1):if p[i-1] == "*":dp[0][i] = dp[0][i-2]for i in range(1, m+1):for j in range(1, n+1):if p[j-1] == "*":if dp[i][j-2]:dp[i][j] = 1continueif p[j-2] == ".":if dp[i-1][j]:dp[i][j] = 1else:if s[i-1] == p[j-2] and dp[i-1][j]:dp[i][j] = 1elif p[j-1] == ".":dp[i][j] = dp[i-1][j-1]else:if s[i-1] == p[j-1]:dp[i][j] = dp[i-1][j-1]return dp[m][n] == 1

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

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

相关文章

数据库:Redis数据库

一、非关系型数据库 1.什么是非关系型数据库 非关系型数据库(Non-relational Database)又称NoSQL数据库是一种不同于传统关系型数据库管理系统(RDBMS)的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL"&…

静态资源不加载是否会影响性能吗

静态资源不加载或加载缓慢确实可能会影响网站或应用的性能。静态资源,如CSS、JavaScript、图片等,是网页的重要组成部分,它们负责网页的样式、交互和视觉效果。 如果静态资源不加载或加载失败,用户可能会看到一个没有样式或交互的…

1999-2022年上市公司员工人数数据

1999-2022年上市公司员工人数数据 1、时间:1999-2022年 2、指标:证券代码、时间、员工人数 3、来源:整理自csmar 4、范围:上市公司 5、指标解释: 上市公司员工人数是衡量公司规模和发展状的重要指标。该数据直接…

阿赵UE学习笔记——24、动画播放控制

阿赵UE学习笔记目录   大家好,我是阿赵。   继续学习虚幻引擎的使用。关于UE的动画系统,之前学习了很多,包括动画合成或者动画蒙太奇等,实际上最后得到的都是一个动画片段。那么这些动画片段,是需要怎样播放控制呢…

babyAGI(6)-babyCoder源码阅读2任务描述部分

废话不多说,我们直接看task的prompt 这里需要注意的是,每个openai_call的temperature都不相同,这也是开发程序时需要调整和关注的一点 1. 初始化代码任务agent 作为babycoder的第一个angent,整个prompt编写的十分值得学习 整个p…

Taro多行文本最多展示5行,超出“查看更多”展示,点击弹层

Taro中,页面需求: 多行文本,展示最多展示5行,超出5行,展示“查看更多”按钮,点击弹层展示文本详细信息。 弹层代码就不说了,着重说一下怎么获取区域高度~ 1.区域设置max-height&am…

ArcGIS Pro打不开Excel?Microsoft驱动程序安装不上?

刚用ArcGIS pro的朋友们可能经常在打开xls或者xlsx文件的时候都会提示,未安装所需的Microsoft驱动程序。 怎么办呢?当然,按照提示装一下驱动就会好吗?有什么状况会出现?有什么临时替代方案呢? 全文目录&a…

为什么要选择第三方软件测试机构?CMA、CNAS第三方软件测试机构推荐

第三方软件测试机构是独立于软件开发方和软件使用方的中立机构,致力于对软件产品进行全面、客观、专业的测试和评估,为软件开发方和使用方提供全面的技术支持和服务。 一、为什么要选择第三方软件测试机构   1、专业性强:拥有专业的测试团…

程序员的认知风格与思维特点

1 程序员的认知风格与思维特点 程序员的认知风格与思维特点,是他们在编程过程中展现出来的独特 目录 1 程序员的认知风格与思维特点 1.1 逻辑思维与抽象思维能力 1.2 空间思维与模式识别能力 1.3 系统思维与问题分解能力 1.4 案例与数据 1.5 总结 2 逻辑思…

实验4-10:判断IP地址的有效性

实验4-10:判断IP地址的有效性 输入一个IPv4格式的IP地址,判断地址的有效性。 IPv4格式的地址由4组十进制数构成,数据由句点间隔,每组数据的范围介于0~255之间。 例如: 202.118.11.24 为有效IP地址, 而 202…

QT实现windows下获取CPU、内存及磁盘信息

一.目的 QT代码实现windows下获取CPU、内存及磁盘信息。 二.代码实现 1.获取CPU和内存信息 #include <Windows.h> // 获取CPU信息 SYSTEM_INFO systemInfo; GetSystemInfo(&systemInfo); qDebug() << "CPU Architecture:" << (systemInfo.wP…

基本电路理论-电流和电压的参考方向

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 电流及参考方向 电流&#xff1a;带电粒子有规则的定向移动 电流强度&#xff1a;单位时间内通过导体横截面的电荷量&#xff0c;即&#xff1a;idq/dt 单位&#xff1a…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】完

随笔&#xff1a;这年头工作不好找咯&#xff0c;大家有学历提升的赶快了&#xff0c;还有外出人多注意身体&#xff0c;没错我在深圳这边阳了&#xff0c;真的绝啊&#xff0c;最尴尬的还给朋友传染了&#xff01;&#xff01;&#xff01; 之前三种的监听情况&#xff0c;监听…

C# 委托与事件 终章

C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用&#xff1f; 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…

【Qt 学习笔记】Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录 Qt 背景…

CSS面试题---基础

1、css选择器及优先级 选择器优先级&#xff1a;内联样式>id选择器>类选择器、属性选择器、伪类选择器>标签选择器、微元素选择器 注意&#xff1a; !important优先级最高&#xff1b; 如果优先级相同&#xff0c;则最后出现的样式生效&#xff1b; 继承得到的样式优先…

Vue3 组合式函数Composables

简介 “组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 我们可以把一些可以复用的逻辑封装成组合式函数放到js文件中&#xff0c;在vue文件中通过import来使用这些逻辑&#xff0c;使vue文件更瘦&#xff0c;逻辑更清晰。 一个小栗子…

.[nicetomeetyou@onionmail.org].faust勒索病毒数据怎么处理|数据解密恢复

引言&#xff1a; 在数字化日益普及的今天&#xff0c;网络安全问题已成为人们不可忽视的挑战。其中&#xff0c;勒索病毒作为一种极具破坏性的恶意软件&#xff0c;已多次在全球范围内制造了重大危机。其中&#xff0c;名为.[nicetomeetyouonionmail.org].faust、[support202…

Sora可能会改变我们的思维方式

当经济学家评估生成式人工智能对人类工作的影响时&#xff0c;教育家也有自己的担忧&#xff0c;毕竟在写作、答疑等领域&#xff0c;AI所展现的能力已经令许多人类望尘莫及&#xff0c;学者们可能有这样的思考&#xff1a;散文是否会继续主导人类的交流和论证。 社交媒体和新闻…

基于Scala开发Spark ML的ALS推荐模型实战

推荐系统&#xff0c;广泛应用到电商&#xff0c;营销行业。本文通过Scala&#xff0c;开发Spark ML的ALS算法训练推荐模型&#xff0c;用于电影评分预测推荐。 算法简介 ALS算法是Spark ML中实现协同过滤的矩阵分解方法。 ALS&#xff0c;即交替最小二乘法&#xff08;Alte…