回溯法
- 字符串 正则匹配
public boolean match(String str, String pattern) {
return helper(str, pattern, "");
}
public boolean helper(String str, String pattern, String pre) {
if (str.equals(pattern)) {
return true;
}
if (pattern.length() == 0) {
return false;
}
if (pattern.charAt(0) == '*') {
return helper(str, pattern.substring(1), "");
}
boolean res = false;
char[] strArrays = str.toCharArray();
char[] patternArrays = pattern.toCharArray();
if (strArrays.length > 0 && (strArrays[0] == patternArrays[0] || patternArrays[0] == '.')) {
if (pattern.length() > 1 && patternArrays[1] == '*') {
res = helper(str, pattern.substring(2), "");
res = res || helper(str.substring(1), pattern.substring(2), "");
res = res || helper(str.substring(1), pattern, "");
} else {
res = helper(str.substring(1), pattern.substring(1), str.substring(0, str.length() - 1));
}
} else {
if (pattern.length() > 1 && patternArrays[1] == '*') {
res = helper(str, pattern.substring(2), "");
}
}
return res;
}