知识点
LeetCode算法题
LeetCode算法题
10.【正则表达式匹配】
解题思路:
这是一道经典的算法设计题。面对这种复杂的题目,都是由浅入深、逐步细化的过程。
首先,我们暂时不管正则符号,如果是两个普通的字符串进行比较,如何进行匹配?就是逐字符比较。并且,我们可以用递归的方式来实现。如下所示:
public static boolean isMatch(char[] text, char[] pattern, int i, int j) { if (j >= pattern.length()) { // 如果pattern匹配完毕,但是text没有匹配完毕,直接返回false 即可 if (i < text.length()) { return false; } else { return true; } } // 进行匹配 boolean first_match = false; if (i < text.length()) { first_match = (text[i] == pattern[j]); } return first_match && isMatch(text, pattern, i + 1, j + 1); }
接下来,处理正则中的通配符
.
,因为通配符.
可以匹配任意字符,因此只要修改一下匹配逻辑即可。最后,要处理
*
。