天题系列:Regular Expression Matching

烧脑神题

public class Solution {
    public boolean isMatch(String s, String p) {
        // 反正我是想不出来 http://www.cnblogs.com/springfor/p/3893593.html
        if(p.length()==0) return s.length()==0;
        if(p.length()==1) return (s.length()==1 &&(p.charAt(0)==s.charAt(0)||p.charAt(0)=='.'));
        
        if(p.charAt(1)!='*'){
            if(s.length()<1) return false;   
            
            return (s.charAt(0)==p.charAt(0)||p.charAt(0)=='.')&&(isMatch(s.substring(1), p.substring(1)));
        }else{
            while(s.length()>0&&(p.charAt(0)==s.charAt(0)||p.charAt(0)=='.')){
                if(isMatch(s , p.substring(2)))
                    return true;
                s = s.substring(1); // p= a*????; s = aaaaa????
            }
            return isMatch(s, p.substring(2)); // p= b*?????, s = a????
        }
        
    }
}

 

posted @ 2015-05-29 07:42  世界到处都是小星星  阅读(115)  评论(0编辑  收藏  举报