public boolean match(char[] str, char[] pattern)
{
if (str == null || pattern == null)
return false;
return match(str, 0, pattern, 0);
}
private boolean match(char[] str, int strIndex, char[] pattern, int patternIndex) {
if (str.length == strIndex && pattern.length == patternIndex)
return true;
if (str.length != strIndex && pattern.length == patternIndex)
return false;
if (patternIndex+1<pattern.length&&pattern[patternIndex+1]=='*'){
if (str.length != strIndex && (str[strIndex] == pattern[patternIndex]||pattern[patternIndex]=='.')){
return match(str,strIndex,pattern,patternIndex+2)||//匹配0个
match(str,strIndex+1,pattern,patternIndex+2)||//匹配1个
match(str,strIndex+1,pattern,patternIndex);//匹配下一个
}
else
return match(str,strIndex,pattern,patternIndex+2);
}
if (str.length != strIndex && (str[strIndex] == pattern[patternIndex]||pattern[patternIndex]=='.')){
return match(str,strIndex+1,pattern,patternIndex+1);
}
return false;
}