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 = “cab”
输出: true
解释: 因为 ‘*’ 表示零个或多个,这里 ‘c’ 为 0 个, ‘a’ 被重复一次。因此可以匹配字符串 “aab”。
示例 5:

输入:
s = “mississippi”
p = “misisp*.”
输出: false

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/regular-expression-matching
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {public boolean isMatch(String s, String p) {int sLen = s.length(), pLen = p.length();boolean[][] memory = new boolean[2][pLen+1];memory[0][0] = true;int cur = 0, pre = 0;for(int i = 0; i <= sLen; i++) {cur = i % 2;pre = (i + 1) % 2;if(i > 1) {for(int j = 0; j <= pLen; j++) {memory[cur][j] = false;}}for(int j = 1; j <= pLen; j++) {if(p.charAt(j-1) == '*') {memory[cur][j] = memory[cur][j-2] || (i > 0 && (s.charAt(i-1) == p.charAt(j-2) || p.charAt(j-2) == '.') && memory[pre][j]);}else {memory[cur][j] = i > 0 && (s.charAt(i-1) == p.charAt(j-1) || p.charAt(j-1) == '.')&& memory[pre][j-1];}}}return memory[cur][pLen];}
}

Java实现 LeetCode 10 正则表达式匹配相关推荐

  1. [动态规划] leetcode 10 正则表达式匹配

    [动态规划] leetcode 10 正则表达式匹配 1.题目 题目链接 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 ...

  2. LeetCode 10. 正则表达式匹配(递归/DP)

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 DP 1. 题目 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 ...

  3. leetcode 10 --- 正则表达式匹配

    1 题目 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...

  4. LeetCode 10.正则表达式匹配(动态规划)

    题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '' 的正则表达式匹配. '.' 匹配任意单个字符 '' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字 ...

  5. LeetCode 10 正则表达式匹配

    https://leetcode-cn.com/problems/regular-expression-matching/ 解决方案 class Solution {public boolean is ...

  6. LeetCode精讲题 10正则表达式匹配(动态规划)

    标题 题目描述 递归(超时) 动态规划 结语 题目描述 先点赞再观看.帅哥靓女养成好习惯. 10 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和'*'的正则表达 ...

  7. LeetCode算法复健:10.正则表达式匹配

    10.正则表达式匹配 日期:2022/7/5 题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或 ...

  8. 【LeetCode】正则表达式匹配

    https://www.imooc.com/article/281353?block_id=tuijian_wz [LeetCode]正则表达式匹配 2019.03.04 19:53 598浏览 题目 ...

  9. java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字

    在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...

最新文章

  1. lucene3.5学习笔记02--创建索引和建立搜索
  2. ICCV 2019 开源论文 | ShapeMatchingGAN:打造炫酷动态的艺术字
  3. MySQL5.7.17绿色版安装
  4. C++课程设计详解-12306的模拟实现
  5. Linux lsof命令使用详细
  6. 2017下半年网络规划设计师考试上午真题
  7. Bootstrap3 缩写词样式
  8. Remote Desktop 访问设置
  9. matlab covar,delta CoVaR 系统性风险指标计算
  10. 1996-2016人工智能各大顶级会议最佳论文best paper
  11. 如何在应用中打开系统播放器
  12. (一)关于POE供电定义以及级别划分,如何测试网线是否满足相关标准?
  13. Storm DRPC 使用及访问C++ Bolt问题的解决方法
  14. 业余爱好者,学习JAVA在实际中有什么用途?
  15. mysql rand_mysql的rand函数
  16. 入门铺路——python
  17. 网站服务器域名费用入什么科目,域名费用计入什么科目
  18. Fitnesse测试
  19. centos7 mailx 邮件发送163邮箱 第二种方式
  20. 业务架构 应用架构 数据架构 实战

热门文章

  1. 安装Docker并配置阿里云镜像加速器
  2. LaTeX文档中使用指示函数(indicator function)
  3. 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient设计与实现方式
  4. 华为机试 (10/25)
  5. Hive的UDF开发踩过的那些坑儿
  6. 龙腾出行基于Kubernetes的DevOps流水线实战
  7. element-ui vue vue.runtime.esm.js?2b0e:619 [Vue warn]: Property or method affectWay is not define
  8. 最新苹果CMS橙子仿B站自适应源码含教程
  9. FastReport .NET 2023.2.7 FastReport Crack
  10. Android的onDestroy方法,android – 活动方法:onCreate()和onDestroy()