10.正则表达式匹配

10.正则表达式匹配


上述5种可匹配情况的举例,便于理解:

1、a与ab星号是匹配的,分析:a与a匹配,让 b星号看作出现0次。

2、abb与ab*匹配,分析:ab与ab星号匹配,让b多出现1次时,能匹配

3、abb与a.*匹配,分析:让字符串.多出现1次时,能匹配。

4、abc和abc匹配,分析:ab与ab匹配,c与c相等。

5、abc与ab.匹配,分析:将字符.看作.时匹配。

初始化及返回值

cpp 复制代码
class Solution{
public:
	bool isMatch(string s,string p){
		int m=s.size()+1,n=p.size()+1;
		vector<vector<bool>> dp(m,vector<bool>(n,false));
		dp[0][0]=true;
		//初始化首行
		for(int j=2;j<n;j+=2){
			dp[0][j]=dp[0][j-2]&&p[j-1]=='*';
		}
		//状态转移
		for(int i=1;i<m;i++){
			for(int j=1;j<n;j++){
				if(p[j-1]=='*'){
					if(dp[i][j-2]) dp[i][j]=true;
					else if(dp[i-1][j]&&s[i-1]==p[j-2]) dp[i][j]=true;
					else if(dp[i-1][j]&&p[j-2]=='.') dp[i][j]=true;
				}else{
					if(dp[i-1][j-1]&&s[i-1]==p[j-1]) dp[i][j]=true;
					else if(dp[i-1][j-1]&&p[j-1]=='.') dp[i][j]=true;
				}
			}
		}
		return dp[m-1][n-1];
	}
};
相关推荐
未来之窗软件服务4 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
豐儀麟阁贵4 小时前
基本数据类型
java·算法
乐迪信息6 小时前
乐迪信息:基于AI算法的煤矿作业人员安全规范智能监测与预警系统
大数据·人工智能·算法·安全·视觉检测·推荐算法
hsjkdhs7 小时前
C++之多层继承、多源继承、菱形继承
开发语言·c++·算法
立志成为大牛的小牛7 小时前
数据结构——十七、线索二叉树找前驱与后继(王道408)
数据结构·笔记·学习·程序人生·考研·算法
星空下的曙光7 小时前
Node.js crypto模块所有 API 详解 + 常用 API + 使用场景
算法·node.js·哈希算法
StarPrayers.9 小时前
旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
前端·人工智能·python·算法·pycharm·启发式算法
爱吃橘的橘猫9 小时前
嵌入式系统与嵌入式 C 语言(2)
c语言·算法·嵌入式
235169 小时前
【LeetCode】146. LRU 缓存
java·后端·算法·leetcode·链表·缓存·职场和发展
weixin_3077791310 小时前
使用Python高效读取ZIP压缩文件中的UTF-8 JSON数据到Pandas和PySpark DataFrame
开发语言·python·算法·自动化·json