題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù)用來匹配包括'.'和''的正則表達(dá)式译荞。模式中的字符'.'表示任意一個(gè)字符,而''表示它前面的字符可以出現(xiàn)任意次(包含0次)缚态。 在本題中磁椒,匹配是指字符串的所有字符匹配整個(gè)模式堤瘤。例如玫芦,字符串"aaa"與模式"a.a"和"abaca"匹配,但是與"aa.a"和"ab*a"均不匹配
public class Solution {
public boolean match(char[] str, char[] pattern) {
if(str == null || pattern == null) {
return false;
}
if(str != null && pattern == null) {
return false;
}
return matchCore(str, 0, pattern, 0);
}
private boolean matchCore(char[] str, int i, char[] pattern, 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[j + 1] == '*') {
if(i == str.length) {
return matchCore(str, i, pattern, j + 2);
}else {
if(str[i] == pattern[j] || pattern[j] == '.') {
return matchCore(str, i, pattern, j + 2) || matchCore(str, i + 1, pattern, j) ||matchCore(str, i + 1, pattern, j + 2);
}else {
return matchCore(str, i , pattern, j + 2);
}
}
}
if(i == str.length && j < pattern.length)
return false;
if(pattern[j] == str[i] || pattern[j] == '.') {
return matchCore(str, i + 1, pattern, j + 1);
}
return false;
}
}