用dp做的
class Solution {
public boolean isMatch(String s, String p) {
int len_s = s.length();
int len_p = p.length();
boolean[][] mem = new boolean[len_p + 1][len_s + 1];
mem[0][0] = true;
for(int i = 1; i < len_p + 1; ++i){
if(p.charAt(i - 1) == '*'){
if((i - 2) >= 0){
if(mem[i - 2][0] == true){
mem[i][0] = true;
}else{
mem[i][0] = false;
}
}else{
mem[i][0] = false;
}
}else{
mem[i][0] = false;
}
}
for(int i = 1; i < len_p + 1; ++i){
if(p.charAt(i - 1) == '*'){
for(int j = 1; j < len_s + 1; ++j){
if(mem[i - 1][j - 1] == true || mem[i - 2][j - 1] == true || mem[i][j - 1] == true){
char temp_char = p.charAt(i - 2);
if(temp_char == s.charAt(j - 1) || temp_char == '.'){
mem[i][j] = true;
}
}
if(mem[i - 2][j] == true){
mem[i][j] = true;
}
}
}else{
for(int j = 1; j < len_s + 1; ++j){
if(p.charAt(i - 1) == '.' || (p.charAt(i - 1) == s.charAt(j - 1))){
mem[i][j] = (mem[i - 1][j - 1]);
}
}
}
}
return mem[len_p][len_s];
}
}