leetcode44

 1 public boolean isMatch(String text, String pattern) {
 2         // 多一维的空间,因为求 dp[len - 1][j] 的时候需要知道 dp[len][j] 的情况,
 3         // 多一维的话,就可以把 对 dp[len - 1][j] 也写进循环了
 4         boolean[][] dp = new boolean[text.length() + 1][pattern.length() + 1];
 5         // dp[len][len] 代表两个空串是否匹配了,"" 和 "" ,当然是 true 了。
 6         dp[text.length()][pattern.length()] = true;
 7 
 8         // 从 len 开始减少
 9         for (int i = text.length(); i >= 0; i--) {
10             for (int j = pattern.length(); j >= 0; j--) {
11                 // dp[text.length()][pattern.length()] 已经进行了初始化
12                 if (i == text.length() && j == pattern.length())
13                     continue;
14                 //相比之前增加了判断是否等于 * 
15                 boolean first_match = (i < text.length() && j < pattern.length() && (pattern.charAt(j) == text.charAt(i) || pattern.charAt(j) == '?' || pattern.charAt(j) == '*'));
16                 if (j < pattern.length() && pattern.charAt(j) == '*') {
17                     //将 * 跳过 和将字符匹配一个并且 pattern 不变两种情况
18                     dp[i][j] = dp[i][j + 1] || first_match && dp[i + 1][j];
19                 } else {
20                     dp[i][j] = first_match && dp[i + 1][j + 1];
21                 }
22             }
23         }
24         return dp[0][0];
25     }

参考:https://leetcode.windliang.cc/leetCode-44-Wildcard-Matching.html

转载于:https://www.cnblogs.com/asenyang/p/10496280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值