题目描述
请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"aba"均不匹配
示例1
输入
“aaa”,“a*a”
返回值
true
设dp[i][j]:a的前i个字符是否和b的前j个字符匹配(初始为false,dp[0][0]=true)
//字符是以0开头的
b[j-1] !=’*’:
1.如果a[i-1]==b[j-1] || b[j-1] == ‘.’ , dp[i][j]=dp[i-1][j-1];
2. dp[i][j] = false;
b[j-1]=="*":
1.前面的字符出现0次,dp[i][j]=dp[i][j-2];
2.如果 a[i-1]==b[j-2] || b[j-2] == ‘.’ , dp[i][j]=dp[i-1][j]
两个满足一个就行
class Solution {
public:
bool match(string a, string b) {
vector<vector<bool>>dp(a.length()+1,(vector<bool>(b.