拓展:
题号 | 题解 | 难度 |
本题:正则化匹配 | 状态转移推导+滚动优化+提前结束 | 困难 |
剑指offer 19.正则表达式匹配 | 状态转移推导+滚动优化+提前结束 | 困难 |
44.通配符匹配 | 状态转移推导+滚动优化+提前结束 | 困难 |
72.编辑距离 | 字符串DP解决一众字符匹配问题 | 困难 |
115.不同的子序列 | 记忆化搜索、动态规划+滚动数组优化 | 困难 |
583.两个字符串的删除操作 | 字符串DP解决一众字符匹配问题 | 困难 |
1143.最长公共子序列 | 字符串DP解决一众字符匹配问题 | 困难 |
动态规划,可解决一众字符串匹配问题:
解题思路:动态规划
一. 状态定义
定义 dp[i][j] 表示 s 的前 i个字符和 p的前 j 个字符能否匹配。
二.状态转移
在进行状态转移时,s中的字符是固定不变的,我们考虑p的第j个字符与s的匹配情况:
1. 是一个小写字母a-z,则必须也为同样的小写字母方能完成匹配:
2. ,则一定可以与匹配成功,此时有
3. ,则表示可对的前一个字符匹配(或理解为复制)任意次(包括 00 次)。为便于阐述,以下图,,,和为例进行说明:
》匹配 0次,意味着和不起作用,相当于在中删去了和,此时有: