LeetCode如何解决正则表达式匹配问题
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了LeetCode如何解决正则表达式匹配问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目请实现一个函数用来匹配包
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
观摩网络安全竞赛
服务器隔离安全吗
计算机网络技术用学代码么
和平区好的软件开发哪家强
网络安全监测实施细则
学前端要学哪些数据库
如何新建个odbc数据库
电脑服务器地址登录不上去
网络安全系统检测技术交底
linux怎么重启服务器
大华股份软件开发待遇
批处理运行服务器命令
创建数据库中的多种对象
惠普服务器管理手册
网上sqllite数据库
网络安全信息资产定义
盈创华彩网络技术有限公司
古语翻译软件开发
数据库的加锁机制
泰州纬立网络技术
sql 表 导入数据库
网络安全形势有统计
三级网络技术考笔试
前端缓存数据库
搬家服务软件开发去哪找
上海日尤客网络技术公司简介
ipmi服务器管理系统
服务器承受能力
facebook网络安全吗
云都网络技术