public class T53 {
public static boolean match(String str, String pattern) {
if (str == null || pattern == null) {
return false;
}
return matchCore(str,pattern,0, 0);
}
private static boolean matchCore(String str,String pattern,int i,int j){
if(i>=str.length() && j>=pattern.length())
return true;
if(i!=str.length() && j>=pattern.length())
return false;
if(j+1<pattern.length() && pattern.charAt(j+1)=='*'){
if(i>=str.length())//匹配完,但是模版还没走完呢
matchCore(str,pattern,i,j+2);
else{//还没匹配完
if(str.charAt(i)==pattern.charAt(j) || pattern.charAt(j)=='.')
return matchCore(str,pattern,i+1,j+2)//abc a*bc
||matchCore(str,pattern,i+1,j)//caaa ca*
||matchCore(str,pattern,i,j+2);//ba ba*a
else
return matchCore(str,pattern,i,j+2);//bc&ba*c
}
}
if(i>=str.length())
return false;
else{
if(str.charAt(i)==pattern.charAt(j) || pattern.charAt(j)=='.')
return matchCore(str,pattern,i+1,j+1);
}
return false;
}
public static void main(String args[]){
System.out.println(match("aaa", "ab*c*a*a"));
}
}