题解 | #正则表达式匹配,递归解法#
正则表达式匹配
http://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param pattern string字符串 * @return bool布尔型 */ //递归解法 public boolean match (String str, String pattern) { //档模式串 长度为零(递归结束) if(pattern.length() == 0) { return str.length() == 0 ; } //首字符是否匹配 boolean first_match = str.length() > 0 && ( pattern.charAt(0)=='.' || pattern.charAt(0)==str.charAt(0) ); //pattern=a*zzzz pattern=.*zzzz 第二个字符是*的情况 if(pattern.length() >= 2 && pattern.charAt(1)=='*') { return match(str , pattern.substring(2))//直接忽略a*,.*从模式串第三个位置开始匹配 || (first_match && match(str.substring(1) , pattern)) ;//若首字母匹配上了,让a*,.*继续和主串匹配 } else {//若第二字母不是*的情况 return first_match && match(str.substring(1) , pattern.substring(1)) ;//在首字符匹配的情况下,转移到[1:]子串去匹配 } } }
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录