44、通配符匹配

这个题目很明显是一个动态规划

我最开始写的代码是
result[i][j]=p.charAt(j-1)!='*'?result[i-1][j-1] && (s.charAt(i-1)==p.charAt(j-1) || p.charAt(j-1)=='?'):
result[i-1][j-1] || result[i-1][j];
与正确答案的区别是 p.chatAt(j-1)==''时 result[i-1][j-1] || result[i-1][j]
正确答案是 result[i][j-1] || result[i-1][j]
我的意思是 p.chatAt(j-1)==''时,参考棋盘的斜着的左前方和上方
答案的意思是参考棋盘的左方和上方
为什么是左方,左方代表了代表任何的字符的情况,上方代表了为‘’(空)的情况、、、、
所以是分析出来的,不要自己乱写、、、、
class Solution {
public boolean isMatch(String s, String p) {
if(p.equals("*")) return true;
int sLength = s.length();
int pLength = p.length();
boolean[][] result=new boolean[sLength+1][pLength+1];
result[0][0]=true;
for (int i = 1; i < pLength + 1; i++) {
result[0][i]=p.charAt(i-1)=='*' && result[0][i-1]==true?true:false;
}
for (int i = 1; i < sLength+1; i++) {
for (int j = 1; j < pLength+1; j++) {
result[i][j]=p.charAt(j-1)!='*'?result[i-1][j-1] && (s.charAt(i-1)==p.charAt(j-1) || p.charAt(j-1)=='?'):
result[i][j-1] || result[i-1][j];
}
}
return result[sLength][pLength];
}
}
85、最大矩形

这个题目我很想用回溯去处理,但是回溯的时间复杂度又非常的高,肯定不太行,力扣算法分类又给它分到了动态规划里,想破脑子也没想明白这个动态规划要记录个啥子
一看答案,好像也没啥人用动态规划,力扣,你个沙雕
明天再写吧,今天好累、、、又是卖命还没啥报酬的一天、、、、