leetcode-10. 正则表达式匹配

题目描述

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

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

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

示例 1:

输入:s = "aa", p = "a"
输出:false
解释:"a" 无法匹配 "aa" 整个字符串。

示例 2:

输入:s = "aa", p = "a*"
输出:true
解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。

示例 3:

输入:s = "ab", p = ".*"
输出:true
解释:".*" 表示可匹配零个或多个('*')任意字符('.')。

思路

动态规划,这道题挺难理解的

解析参考. - 力扣(LeetCode)

示例参考

class Solution(object):def isMatch(self, s, p):""":type s: str:type p: str:rtype: bool"""m = len(s)n = len(p)dp = [[False]*(n+1) for _ in range(m+1)]dp[0][0] = Truefor j in range(1, n+1):if p[j-1]=='*':dp[0][j] = dp[0][j-2]for i in range(1, m+1):for j in range(1, n+1):if p[j-1] in (s[i-1], '.'):dp[i][j] = dp[i-1][j-1]elif p[j-1] == '*':if p[j-2] in (s[i-1],'.'):dp[i][j] = dp[i][j-2] or dp[i-1][j-2] or dp[i-1][j]else:dp[i][j] = dp[i][j-2]return dp[m][n]if __name__ == '__main__':s = Solution()ss = 'aab'p = 'c*a*b'print(s.isMatch(ss, p))

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

稀土阻燃剂应用在PE(聚乙烯)上的优势

稀土阻燃协效剂基于稀土4f电子层结构带来的特有属性,在聚合物材料燃烧时可催化酯化成炭,迅速在高分子表面形成致密连续的碳层,隔绝聚合物材料内部的可燃性气体与氧气的接触,从而达到阻燃抑烟的效果,且燃烧时不产生有毒有害气体。其主要特点如下: 有效性:…

巡检系统新选择:零代码设备巡检系统的优势与功能

在现代工业生产中,设备的稳定运行是企业正常生产的关键。为了确保设备的可靠性和安全性,设备巡检系统成为了企业不可或缺的工具。而零代码设备巡检系统以其独特的优势,为企业的设备管理带来了全新的体验。 目前,市场上的巡检系统种…

OpenAI o1模型怎么使用,这篇文章告诉你

九月最大的热点无疑就是OpenAI推出o1模型 此次发布的o1 系列模型就是之前内部代码为“草莓”模型。 下面就给大家介绍一下此次o1模型的强大之处以及使用方法。 如果大家想要了解OpenAI o1方法,可直接拉到文章末尾。 1.、博士级学科能力 o1模型在推理能力上展现出…

[笔记]一组电缆、定位相关产品的技术参数

csdn不允许做广告,这里的那家定位供应商的技术看起来是可以的。很有希望。它的原理并不复杂,这家企业在处理业务领域以外的新型产品时,是查过资料的,这就超过了60%的同行。 1.电缆 仅给出现在市面供应的铠装电缆结构&#xff0c…

只用几行代码,不依赖任何框架?SMTFlow 轻松实现前端流程图

只用几行代码,不依赖任何框架?SMTFlow 轻松实现前端流程图! 在前端开发中,如果你需要一个简单好用的流程图设计工具,SMTFlow 绝对是你的不二之选!本文将介绍 SMTFlow 的核心功能、特点以及如何快速上手。 工…

RAG高级优化:检索策略探讨Fusion, HyDE安排上(含代码)

传统的检索方法通常依赖于对query进行语义理解(基于向量)或关键字匹配(BM25),这两种方法都有其优点和缺点。融合检索、HyDE和RAG-Fusion可以创建一个更健壮和准确的检索系统。本文将介绍三种优化方法: Fusion retrieval: 基于向量和基于bm25的…

内核驱动开发之系统移植

系统移植 系统移植:定制linux操作系统 系统移植是驱动开发的前导,驱动开发是系统运行起来之后,在内核中新增一些子功能而已 系统移植就四个部分: 交叉编译环境搭建好bootloader的选择和移植:BootLoader有一些很成熟…

有关shell练习

统计家目录下.c文件的个数 #!/bin/bash count0for file in ~/* doif [[ "$file" *.c ]]; then((count))fidone echo "家目录下.c文件个数为:$count"定义一个稀疏数组(下标不连续),写一个函数,求该稀疏数组的和,要求稀…

苹果、OPPO、小米的选择:聚焦TI AMOLED显示屏电源管理双子星芯片

如果说眼睛是心灵的窗户,那么显示屏就是计算机的窗户,通过这一扇窗,我们可以更直观的进行人机对话,更默契的与计算机配合。如今在各种产品的屏幕应用中,更多使用的是OLED显示屏,今天,平台君就给大家说说TI的两枚三路输出AMOLED显示器电源芯片——TPS65632和TPS65631W。 …

中高级工程师都需知道的七种高级 JavaScript 技术用例

直接干货走起: 1. 掌握闭包,让代码更简洁 闭包是 JavaScript 中最强大且经常被误解的功能之一。它们允许你使用私有变量创建函数,从而使你的代码更加模块化和更安全。 什么是闭包?当函数记住其词法范围时,即使函数…

ESP32 本地大模型部署语音助手

ESP32S3 Box 提供了 chatgpt 的 demo。因为访问不了的原因,打算改来做一个本地化部署的专用语音助手。 文章目录 准备工作Windows 安装 ESP-IDFWSL 安装 ESP-IDF配置 IDF编译 chatgpt demo串口映射下载 语音助手调试步骤遇到的问题在WSL2中,server.py 脚…

Vue3项目开发——新闻发布管理系统(八)

文章目录 十、新闻管理模块设计开发1、新闻管理主页面设计1.1 基本架构搭建1.1.1 搜索表单1.1.2 新闻主表格样式(静态数据模拟渲染)1.2 新闻分类选择框1.2.1 新建组件1.2.2 页面中导入渲染1.2.3 调用接口,动态渲染下拉分类,设计成 v-model 的使用方式1.2.4 父组件定义参数绑定…

供应链采购管理系统:开启智能采购新时代

在当今全球化的商业环境中,供应链管理的高效性和智能化对于企业的生存与发展至关重要。而供应链采购管理系统,尤其是智能采购系统,正成为企业提升竞争力的关键工具。 一、传统采购管理的挑战 传统的供应链采购管理往往面临着诸多难题。首先&a…

数据中心里全速运行的处理器正在浪费能源

数据中心是耗电大户,运营商一直在努力解决的一个关键问题是如何减少能源和资源消耗。人们已经找到了一些巧妙的解决方案,例如使用非饮用水来冷却设备,但一个显而易见的解决方案似乎被忽略了:启用处理器的各种省电功能。 随着需求的…

示例说明:sql语法学习

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。学习SQL可以帮助你有效地查询、插入、更新和删除数据库中的数据。以下是SQL语法的一些基本概念和常用命令: 1. SQL基础语法 SQL关键字&am…

揭秘化工产品网络优化成本:性价比高的策略大公开

合作咨询联系竑图 hongtu201988 化工产品网络推广到底需要多少钱?为什么有些几千就行,有些需要几万甚至几十万不等?可以肯定地说:化工产品网络优化的费用并非一成不变,而是受到多种因素的影响。今天湖南竑图网络给大家…

ucosii+STM32 BLDC电机控制器设计 附源程序Proteus仿真

资料下载地址:ucosiiSTM32 BLDC电机控制器设计 附源程序Proteus仿真 嵌入式,现在把我的程序和设计思路分享给大家。 软件所用版本如下 Proteus版本 SP 8.7 STM32CubeMX 版本 5.4.0 HAL固件库版本 1.8.0 Keil 版本 uVison5 一、设计思路: …

如何构建出更好的大模型RAG系统?

ChatGPT爆火之后,以ChatPDF为首的产品组合掀起了知识库问答的热潮。 在过去一整年中,大多数人都在完成RAG系统到高级RAG系统的迭代升级。但是技术发展是迅速的,如何深入了解RAG的发展,做出更好的RAG系统,其实还是非常…

手术缝合线合格品检测项目众多 线径又是其重要一环!

手术缝合线的合格与否,关系着使用及恢复情况,其品质的优劣非常重要,而要想得到合格的手术缝合线,则需要多种类型的仪器进行检测。其中线径就是重要一环,下面来看看线径检测仪,并简单介绍一下其他所需检测信…