LeetCode如何解决正则表达式匹配问题
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍了LeetCode如何解决正则表达式匹配问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目请实现一个函数用来匹配包
千家信息网最后更新 2025年01月23日LeetCode如何解决正则表达式匹配问题
这篇文章主要介绍了LeetCode如何解决正则表达式匹配问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
题目
请实现一个函数用来匹配包含'. '和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。
示例 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*."输出: falses 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母以及字符 . 和 *,无连续的 '*'。
思路
如果 BB 的最后一个字符是正常字符,那就是看 A[n-1] 是否等于 B[m-1],相等则看 A_{0..n-2}与 B_{0..m-2} ,不等则是不能匹配,这就是子问题。
如果 BB 的最后一个字符是'.',它能匹配任意字符,直接看 A_{0..n-2}与 B_{0..m-2}
如果 B 的最后一个字符是'',它代表 B[m-2]=c 可以重复0次或多次,它们是一个整体 c
情况一:A[n-1] 是 0 个 c,B 最后两个字符废了,能否匹配取决于 A_{0..n-1}和 B_{0..m-3}是否匹配
情况二:A[n-1] 是多个 c 中的最后一个(这种情况必须 A[n-1]=c 或者 c='.'),所以 A 匹配完往前挪一个,B继续匹配,因为可以匹配多个,继续看 A_{0..n-2}和 B_{0..m-1}是否匹配。
代码
class Solution { public boolean isMatch(String s, String p) { int n = s.length(), m = p.length(); boolean[][] f = new boolean[n+1][m+1]; for(int i = 0; i <= n; i++){ for(int j = 0; j <= m; j++){ if(j == 0){ f[i][j] = i == 0; }else{ //非空正则 if(p.charAt(j-1) != '*'){ //非* if(i > 0 && (s.charAt(i-1) == p.charAt(j-1) || p.charAt(j-1) == '.')){ f[i][j] = f[i-1][j-1]; } }else{ //* if(j >= 2){ f[i][j] |= f[i][j-2]; } if(i >= 1 && j >= 2 && (s.charAt(i-1) == p.charAt(j-2) || p.charAt(j-2) == '.')){ f[i][j] |= f[i-1][j]; } } } } } return f[n][m]; }}
感谢你能够认真阅读完这篇文章,希望小编分享的"LeetCode如何解决正则表达式匹配问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
字符
多个
字符串
示例
输入
输出
篇文章
解释
正则
表达式
问题
就是
情况
模式
代表
元素
字母
小写
两个
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
清楚谷歌浏览器数据库
网络安全要素不包括
网络安全加解密实验
wps免费服务器
沈河区服务好的软件开发哪家强
新泰oa办公软件开发电话
数据库连不上怎么办
云顶哪个服务器国服玩家多
外包软件开发合同 百度文库
与网络安全有关标的股
一年一度的网络安全攻防演习
重启服务器后网卡不通
网络安全赌博诈骗
杭州市网络安全监察支队
app软件开发联系人
mac os ftp服务器
淄博妇幼保健院网络安全
如何连接外部数据库
有关网络安全的演讲
大话西游秦颂古今服务器
服务器工作站公司简介
服务器一通道是什么意思
沈阳软件开发app流程
数据库删不了
质谱数据库作用
惠普服务器引导
腾讯视频软件开发与更新
寒武纪270服务器
node.js 对数据库
威青高速网络安全教育