目录
简介:
动态规划
题目:
题解:
class Solution {
public boolean isMatch(String s, String p) {
int sl = s.length();
int pl = p.length();
boolean[][] rd = new boolean[sl+1][pl+1];
rd[0][0] = true;
char[] sc = s.toCharArray();
char[] pc = p.toCharArray();
for(int j = 1; j < pl+1; j++){
if(pc[j-1] == '*') rd[0][j] = rd[0][j-2];
}
for(int i = 1; i < sl+1; i++){
for(int j = 1; j < pl+1; j++){
if(sc[i-1] == pc[j-1] || pc[j-1] == '.'){
rd[i][j] = rd[i-1][j-1];
}
else if(pc[j-1] == '*'){
if(sc[i-1] == pc[j-2] || pc[j-2] == '.'){
rd[i][j] = rd[i][j-2] || rd[i-1][j] || rd[i-1][j-2];
} else{
rd[i][j] = rd[i][j-2];
}
}
}
}
return rd[sl][pl];
}
}
推荐阅读
本题题解: