- 题目描述
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。
示例
输入:
s = “aab”
p = “cab”
输出: true
解释: 因为 ‘*’ 表示零个或多个,这里 ‘c’ 为 0 个, ‘a’ 被重复一次。因此可以匹配字符串 “aab”。
- c++代码
bool solve(string &s,string &p,int si,int pi){
if(pi>=p.length()) return si>=s.length();
bool b = si < s.size() && (s[si] == p[pi] || p[pi] == '.');
if((pi+1)<p.length()&&p[pi+1]=='*') return solve(s,p,si,pi+2)||(b&&solve(s,p,si+1,pi));
else return solve(s,p,si+1,pi+1)&&b;
}
bool isMatch(string s, string p) {
return solve(s,p,0,0);
}
题目链接
https://leetcode-cn.com/problems/regular-expression-matching/