Java实现 LeetCode 10 正则表达式匹配
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 正则表达式匹配相关推荐
- [动态规划] leetcode 10 正则表达式匹配
[动态规划] leetcode 10 正则表达式匹配 1.题目 题目链接 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 ...
- LeetCode 10. 正则表达式匹配(递归/DP)
文章目录 1. 题目 2. 解题 2.1 递归 2.2 DP 1. 题目 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 ...
- leetcode 10 --- 正则表达式匹配
1 题目 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...
- LeetCode 10.正则表达式匹配(动态规划)
题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '' 的正则表达式匹配. '.' 匹配任意单个字符 '' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字 ...
- LeetCode 10 正则表达式匹配
https://leetcode-cn.com/problems/regular-expression-matching/ 解决方案 class Solution {public boolean is ...
- LeetCode精讲题 10正则表达式匹配(动态规划)
标题 题目描述 递归(超时) 动态规划 结语 题目描述 先点赞再观看.帅哥靓女养成好习惯. 10 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和'*'的正则表达 ...
- LeetCode算法复健:10.正则表达式匹配
10.正则表达式匹配 日期:2022/7/5 题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或 ...
- 【LeetCode】正则表达式匹配
https://www.imooc.com/article/281353?block_id=tuijian_wz [LeetCode]正则表达式匹配 2019.03.04 19:53 598浏览 题目 ...
- java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字
在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...
最新文章
- lucene3.5学习笔记02--创建索引和建立搜索
- ICCV 2019 开源论文 | ShapeMatchingGAN:打造炫酷动态的艺术字
- MySQL5.7.17绿色版安装
- C++课程设计详解-12306的模拟实现
- Linux lsof命令使用详细
- 2017下半年网络规划设计师考试上午真题
- Bootstrap3 缩写词样式
- Remote Desktop 访问设置
- matlab covar,delta CoVaR 系统性风险指标计算
- 1996-2016人工智能各大顶级会议最佳论文best paper
- 如何在应用中打开系统播放器
- (一)关于POE供电定义以及级别划分,如何测试网线是否满足相关标准?
- Storm DRPC 使用及访问C++ Bolt问题的解决方法
- 业余爱好者,学习JAVA在实际中有什么用途?
- mysql rand_mysql的rand函数
- 入门铺路——python
- 网站服务器域名费用入什么科目,域名费用计入什么科目
- Fitnesse测试
- centos7 mailx 邮件发送163邮箱 第二种方式
- 业务架构 应用架构 数据架构 实战
热门文章
- 安装Docker并配置阿里云镜像加速器
- LaTeX文档中使用指示函数(indicator function)
- 一个高性能、高稳定性的跨平台MQTT客户端——mqttclient设计与实现方式
- 华为机试 (10/25)
- Hive的UDF开发踩过的那些坑儿
- 龙腾出行基于Kubernetes的DevOps流水线实战
- element-ui vue vue.runtime.esm.js?2b0e:619 [Vue warn]: Property or method affectWay is not define
- 最新苹果CMS橙子仿B站自适应源码含教程
- FastReport .NET 2023.2.7 FastReport Crack
- Android的onDestroy方法,android – 活动方法:onCreate()和onDestroy()