题解 | #正则表达式匹配,递归解法#

正则表达式匹配

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:]子串去匹配
        }
        
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务