题目
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。
'.' 匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素
具体题目见leetcode
思路一:回溯
匹配串p每次看两位,主要讨论第二位是否出现'*'号
若没有'*'号,则可以直接一一对比两个字符串。
- 若第一位字符相等
- 递归isMatch(s.substring(1),p.substring(1))
若存在'*'号,考虑以下两种情况:
- 前一个字母重复多次
- 若第一位匹配,则递归比较p和s.substring(1)
- 否则返回false
- 前一个字母出现零次
- 递归比较s和p.substring(2)
- 此时不考虑第一位是否相等
public
该方法时空复杂度较高
思路二:动态规划
注意从大向小填充,因为当第二位为'*'时,需要向后对比。
public
时空复杂度s*p
https://blog.csdn.net/softwareX4/article/details/90761502blog.csdn.net 10. 正则表达式匹配 - 听雨轩nucode.cn