题目描述
请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配

解答:
public class Solution {
    public boolean match(char[] str, char[] pattern)
    {
        if(str==null||pattern==null)return false;
        return mathc1(str, 0, pattern, 0);
    }

    public boolean mathc1(char[] str,int strindex, char[] pattern,int patternindex){
        if(strindex==str.length&&patternindex==pattern.length) return true;
        if(strindex<str.length&&patternindex==pattern.length) return false;
        if(pattern.length>patternindex+1&&pattern[patternindex+1]=='*'){
            if(strindex>=str.length||(strindex<str.length&&str[strindex]!=pattern[patternindex]&&pattern[patternindex]!='.')){
                return mathc1(str, strindex, pattern, patternindex+2);
            }else{
                return mathc1(str, strindex+1, pattern, patternindex)
                        ||mathc1(str, strindex, pattern, patternindex+2)
                        ||mathc1(str, strindex+1, pattern, patternindex+2);
            }
        }else {
            if(strindex<str.length&&(str[strindex]==pattern[patternindex]||pattern[patternindex]=='.')){
                return mathc1(str, strindex+1, pattern, patternindex+1);
            }
            return false;
        }
    }
}