- content {:toc}
给你一个字符串
s
和一个字符规律p
,请你来实现一个支持'.'
和'*'
的正则表达式匹配。
'.'
匹配任意单个字符'*'
匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串
s
的,而不是部分字符串。
1 2 3
输入:s = "aa", p = "a" 输出:false 解释:"a" 无法匹配 "aa" 整个字符串。
- 首先, 我们要明白这两个字符的作用是什么
.
匹配任意一个字符*
有两个作用, 一个是擦除前面的字符(匹配零个前面的那一个元素), 或者是 多个前面的字符
- 能匹配
s[i] == p[j] || p[j] == '.'
看后面的字符是否为*
,,- 后面的字符是否为
*
那么就会有两种情况,一种是擦除前面的字符, 另一种是多个字符 - 后面的字符不为
*
那么, 就直接dp(s, i+1, p, j+1);
- 后面的字符是否为
- 不能匹配的话,
- 后面的字符为为
*
,*
发挥擦除的作用 - 否则返回
0
- 后面的字符为为
- 当匹配完毕后, 如果 p 有多余的字符, 看看是否能够擦除字符
|
|