10. 正则表达式匹配

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

'.' 匹配任意单个字符

'*' 匹配零个或多个前面的那一个元素

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

说明:

s 可能为空,且只包含从 a-z 的小写字母。

p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。

示例 1:

输入:

s = "aa"

p = "a"

输出: false

解释: "a" 无法匹配 "aa" 整个字符串。

示例 2:

输入:

s = "aa"

p = "a*"

输出: true

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

示例 3:

输入:

s = "ab"

p = ".*"

输出: true

解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。

示例 4:

输入:

s = "aab"

p = "c*a*b"

输出: true

解释: 因为 '*' 表示零个或多个,这里 'c' 为 0 个, 'a' 被重复一次。因此可以匹配字符串 "aab"。

示例 5:

输入:

s = "mississippi"

p = "mis*is*p*."

输出: false

class Solution:

def isMatch(self, s: str, p: str) -> bool:

dp = [[False] * (len(p) + 1) for _ in range(len(s) + 1)]

dp[-1][-1] = True

for i in range(len(s), -1, -1):

for j in range(len(p) - 1, -1, -1):

first_match = i < len(s) and p[j] in {s[i], '.'}

if j+1 < len(p) and p[j+1] == '*':

dp[i][j] = dp[i][j+2] or first_match and dp[i+1][j]

else:

dp[i][j] = first_match and dp[i+1][j+1]

return dp[0][0]

python可以做力扣的题吗_力扣题目练习一相关推荐

  1. python可以做力扣的题吗_力扣周赛 198 - python 解答

    做出了四道题目,但后两道做的很勉强,也错了几次.刚看第三道题,虽然写着 medium,但是没思路,打开第四道看到反而已经有人过了,于是先做了第四道,才回来做第一道. 最后一道是纯暴力枚举加了几个条件: ...

  2. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  3. 力扣刷题记录-单调栈相关题目

    单调栈是指栈里的元素保持升序或者降序. 判别是否需要使用单调栈:通常是一维数组里面,需要寻找一个元素左边或者右边第一个比自己大或者小的元素的位置,则可以考虑使用单调栈:这样的时间复杂度一般为O(n). ...

  4. 力扣刷题记录_字符串(自学)

    字符串 一.字符串 1.反转字符串(力扣344) 2.反转字符串 II(力扣541) 3.替换空格(剑指 Offer 05) 4.翻转字符串里的单词(力扣151) 5.左旋转字符串(剑指 Offer ...

  5. python tkinter做的生成计算题的GUI

    前言 提示:把前段时间做的一个训练小朋友计算能力的python小程序做了一个封装GUI,使用起来非常方便,题海战术可以大幅度提升小朋友的计算能力,目前做好了小数正负数整数的程序,欢迎大家探讨. 一.代 ...

  6. 力扣刷题心得(设计类题目)

    设计类题目基本考察的是你对现实事物的抽象能力,一般会遇到一些类的设计.字符串切分.集合的使用(list.map.set.stack.deque)等,结束后我会更新一些关于这些集合的常见使用方法和场景. ...

  7. python代做在哪找靠谱_现在知道莆田鞋在哪买靠谱普及_莆田鞋在哪买靠谱

    现在知道莆田鞋在哪买靠谱普及 首先祝大家找到靠谱的卖家,买到自己满意的鞋子!找到良心卖家:如果这些还是不能保证你能买到自己满意的鞋,因为你不能保证钱给他了,会给你发货.都是陌生人,又不认识,没法保障自 ...

  8. python能做cad二次开发吗_做CAD二次开发有没有前途和钱途?

    原标题:做CAD二次开发有没有前途和钱途? 作为上海垂杨信息科技的苦逼小编一枚,特别羡慕从事技术开发的同事,为啥呀,因为他们工资高,奖金多呗.最近一朋友问我,他大学学得C#,在学校的就业培训课上,就业 ...

  9. python可以做哪些有趣的事作文_一件有趣的事作文300字(精选8篇)

    一件有趣的事作文300字(精选8篇) 在平凡的学习.工作.生活中,许多人都写过作文吧,作文根据体裁的不同可以分为记叙文.说明文.应用文.议论文.那么你有了解过作文吗?下面是小编帮大家整理的一件有趣的事 ...

最新文章

  1. 贝叶斯定理——数学之美
  2. [SCOI2009]生日礼物
  3. [IOS] 'Double' is not convertible to 'CGFloat'
  4. js中event对象属性和方法
  5. 两篇关于MCU的嵌入式应用的文章【ZZ】
  6. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍
  7. 前端学习(2797):实现右侧数据的渲染
  8. 【LeetCode笔记】6. Z字形变化(JAVA、思路)
  9. 阿里五年晋升三次,这个程序员要聊聊他的选择
  10. python元祖封包_[Day8]遷延蹉跎,來日無多-python終極指南:模組和封包,外掛般的超能力...
  11. Q135:PBRT-V3,随机渐进光子映射(Stochastic Progressive Photon Mapping)(16.2章节)
  12. EPC(建筑工程总承包)行业解决方案(汉得咨询)
  13. Web前端开发-为网页元素添加阴影效果
  14. Golang深拷贝浅拷贝
  15. 排序算法 之希尔排序及时间复杂度分析
  16. 人工智能+大数据+云计算
  17. 宏基因组测序流程(不完全版)
  18. 用软件查看内存大小和插槽数
  19. 使用 Workbox 创建 PWA 应用
  20. 实时监控,智能预警,疾控中心的战疫“速度”

热门文章

  1. 计算机基础知识PDF文档,计算机基础知识(范文).pdf
  2. markdown html图片,Markdown语法对应的HTML标签实现
  3. 为什么一般hashtable的桶数会取一个素数
  4. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2
  5. 机器学习之KNN算法学习笔记
  6. MongoDB 数据恢复与导出
  7. .net core 2.0学习笔记(三):度量.net framework 迁移到.net core的工作量
  8. php里 \r\n换行问题
  9. 简单的C#字符串数组转字符串方法
  10. typeof---JavaScript