[LeetCode] 44. 通配符匹配(java实现)动态规划
1. 题目
2. 读题(需要重点注意的东西)
思路(动态规划):
整体思路简写如下:
具体思路完全类似于[LeetCode] 10. 正则表达式匹配(java实现)动态规划,在此不再赘述。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public boolean isMatch(String s, String p) {
int n = s.length(),m = p.length();
s = " "+s; // 使下标从1开始
p = " "+p;
boolean[][] f = new boolean[n+10][m+10];
f[0][0] = true;
for(int i = 0;i <= n;i++){
for(int j = 1;j <= m;j++){
if(p.charAt(j) == '*') f[i][j] = f[i][j-1] || (i != 0 && f[i-1][j]) ;
else f[i][j] = (p.charAt(j) == '?' || s.charAt(i) == p.charAt(j)) && (i != 0 && f[i - 1][j - 1]) ;
}
}
return f[n][m];
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 动态规划