版权声明:原创文章,转载需注明转载出处! https://blog.csdn.net/zhoumingsong123/article/details/82015658
public class Solution {
public boolean match(char[] str, char[] pattern) {
int i = 0;
int j = 0;
String str1 = String.valueOf(str);
String pattern1 = String.valueOf(pattern);
return huishu(i, j, str1, pattern1);
}
public boolean huishu(int i, int j, String str1, String pattern1) {
if (i == str1.length() && j == pattern1.length()) {
return true;
}
if (j == pattern1.length() && i < str1.length()) {
return false;
}
if (((j + 1) < pattern1.length())) {
if (pattern1.charAt(j + 1) != '*') {
if (i<str1.length()&&((str1.charAt(i) == pattern1.charAt(j) || pattern1.charAt(j) == '.'))) {
return huishu(i + 1, j + 1, str1, pattern1);
} else {
return false;
}
} else {
// boolean flag=huishu(i,j+2,str1,pattern1);
//
// if(flag)
// {
// return true;
// }
// else
// {
// if((str1.charAt(i)==pattern1.charAt(j)||pattern1.charAt(j)=='.'))
// {
//
// }
// else
// {
// return false;//----------------------------this is error ba*b 与 bb是匹配的,不能返回false
//
// }
// return huishu(i+1,j,str1,pattern1);
// }
if (i<str1.length()&&((str1.charAt(i) == pattern1.charAt(j) || pattern1.charAt(j) == '.'))) {
return huishu(i, j + 2, str1, pattern1) || huishu(i + 1, j, str1, pattern1);
} else {
return huishu(i, j + 2, str1, pattern1);
}
}
} else {
if (i<str1.length()&&((str1.charAt(i) == pattern1.charAt(j) || pattern1.charAt(j) == '.'))) {
return huishu(i + 1, j + 1, str1, pattern1);
} else {
return false;
}
}
}
public static void main(String[] args) {
Solution solution = new Solution();
char str[] = {'a', 'b'};
char pattern[] = {'.', '*'};
System.out.println(solution.match(str, pattern));
}
}