当前位置: 首页 > news >正文

10. 正则表达式匹配

10. 正则表达式匹配


class IsMatch:"""10. 正则表达式匹配https://leetcode.cn/problems/regular-expression-matching/description/"""def solution(self, s: str, p: str) -> bool:m, n = len(s), len(p)memo = [[-1] * n for _ in range(m)]return self.dp(s, 0, p, 0, memo)def dp(self, s: str, i: int, p: str, j: int, memo: list) -> bool:m, n = len(s), len(p)# base case 1# 模式串 p 匹配完了,那要看文本串 s 是否匹配完if j == n:return i == m# base case 2# 文本串 s 匹配完了,那模式串 p 一定是 字符 和 * 成对出现的if i == m:# 检查是否成对if (n - j) % 2 == 1:return False# 检查是否 x*y*z* 这种形式for k in range(j + 1, n, 2):if p[k] != '*':return Falsereturn True# 备忘录if memo[i][j] != -1:return memo[i][j]res = Falseif s[i] == p[j] or p[j] == '.':if j < n - 1 and p[j + 1] == '*':# 通配符匹配0次res = self.dp(s, i, p, j + 2, memo) or \self.dp(s, i + 1, p, j, memo)  # 通配符匹配多次else:# 常规匹配1次res = self.dp(s, i + 1, p, j + 1, memo)else:if j < n - 1 and p[j + 1] == '*':# 通配符匹配0次res = self.dp(s, i, p, j + 2, memo)else:# 无法继续匹配res = Falsememo[i][j] = resreturn res
http://www.lryc.cn/news/166179.html

相关文章:

  • [Unity]GPU Instancing 无效的原因
  • 2023 年前端编程 NodeJs 包管理工具 npm 安装和使用详细介绍
  • ptmalloc源码分析 - Top chunk的扩容函数sysmalloc实现(09)
  • [BJDCTF2020]ZJCTF,不过如此 preg_replace /e模式漏洞
  • C++day4
  • 【LeetCode-简单题】541. 反转字符串 II
  • Linux服务使用宝塔面板搭建网站,并发布公网访问
  • 代码随想录算法训练营19期第48天
  • 【校招VIP】产品项目分析之竞品分析
  • 【JavaScript内置对象】Date对象,从零开始
  • idea启动缓慢解决办法
  • App测试中ios和Android有哪些区别呢?
  • Flink JobManager的高可用配置
  • 为什么Token手动添加到请求的Header中,通常使用“Authorization“字段?
  • 国际生态数据获取网络
  • 爬虫逆向实战(34)-某视综数据(MD5、AES)
  • 数据分析三剑客之Matplotlib
  • Python Opencv实践 - LBP特征提取
  • Docker 搭建Redis Cluster 集群
  • 解决谷歌浏览器会http网站自动变成https的问题
  • go小知识2
  • zabbix监控H3C设备
  • 国产化改造之Mysql迁移方案:Mysql Galera Cluster
  • bootstrap表单类型
  • 第一章 SQL Server 数据库部署
  • 赛事个人团体报名分组成绩查询证书h5小程序开源版开发
  • 【大数据环境配置】01-安装VMware虚拟机
  • 什么是C语言中的命名空间?
  • Java语言特点 8种基本数据类型 标识符等练习题 插入/希尔/选择/堆/冒泡/快速/归并/计数排序
  • 建站系列(七)--- 常用前后端框架