10. 正则表达式匹配
#
题目给你一个字符串 s
和一个字符规律 p
,请你来实现一个支持 '.'
和 '*'
的正则表达式匹配。
'.'
匹配任意单个字符'*'
匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s
的,而不是部分字符串。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
提示:
0 <= s.length <= 20
0 <= p.length <= 30
s
可能为空,且只包含从a-z
的小写字母。p
可能为空,且只包含从a-z
的小写字母,以及字符.
和*
。- 保证每次出现字符
*
时,前面都匹配到有效的字符
#
思路最开始我一看是实现正则表达式(的一个子集)的引擎,瞬间就想起了该构造一个状态机,但看了看题解才发现大家都是用的动态规划,于是也是用的动态规划解题。
后面大概会用有限状态自动机来再实现一遍。