题目描述
请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含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; } } }