题目
代码
public class Solution {
public boolean match(char[] str, char[] pattern){
if(str==null||pattern==null){
return false;
}
return mathcCore(str,pattern,0,0);
}
public boolean mathcCore(char[] str, char[] pattern,int index1,int index2){
if(index1==str.length&&index2==pattern.length){
return true;
}
if((index1<str.length&&index2>=pattern.length)){
return false;
}
if((index2+1<pattern.length)&&pattern[index2+1]=='*'){
if((index1<str.length&&pattern[index2]==str[index1])||(pattern[index2]=='.'&&index1<str.length)){
return mathcCore(str,pattern,index1+1,index2+2)//*表示前一个字符出现一次
||mathcCore(str,pattern,index1+1,index2)//*表示前一个字符可以出现多次
||mathcCore(str,pattern,index1,index2+2);//*表示前一个字符出现0次
}else {
return mathcCore(str,pattern,index1,index2+2);//当前字符与模式字符不匹配,*表示模式字符出现0次
}
}
if((index1<str.length&&str[index1]==pattern[index2])||(pattern[index2]=='.'&&index1<str.length)){
return mathcCore(str,pattern,index1+1,index2+1);
}
return false;
}
}