请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @param pattern string字符串
* @return bool布尔型
*/
public boolean match (String str, String pattern) {
// write code here
if(str == null || pattern == null) return false;
int i=0, j=0;
do{
if(j+1 < pattern.length() && pattern.charAt(j+1) == '*'){
char current=pattern.charAt(j);
if((i<str.length()) && (str.charAt(i)== current|| current=='.')){
return match(str.substring(i), pattern.substring(j+2)) || match(str.substring(i+1), pattern.substring(j)) || match(str.substring(i+1), pattern.substring(j+2));
} else{
j+=2;
}
}else{
if(str.length() > i && pattern.length() > j){
if(pattern.charAt(j) == '.' || pattern.charAt(j) == str.charAt(i)){
i++;
j++;
} else {
return false;
}
}
}
} while((str.length() > i&& pattern.length() >j)|| (j+1 < pattern.length() && pattern.charAt(j+1) == '*'));
return i == str.length() && pattern.length() == j;
}
}