美文网首页
LeetCode 第 44 题:通配符匹配

LeetCode 第 44 题:通配符匹配

作者: 放开那个BUG | 来源:发表于2021-07-31 16:57 被阅读0次

1、前言

题目描述

2、思路

这道题与第10题的正则表达式匹配一毛一样,甚至连解法都差不多。都是先匹配第一个,如果遇到特殊匹配符号,然后接着选或者不选。

3、代码

class Solution {
    public boolean isMatch(String s, String p) {
        if(s == null || p == null){
            return false;
        }

        Boolean[][] memo = new Boolean[s.length()][p.length()];

        return dfs(s, 0, p, 0, memo);
    }

    private boolean dfs(String s, int i, String p, int j, Boolean[][] memo){
        if(j == p.length()){
            return i == s.length();
        }

        if(i < s.length() && j < p.length() && memo[i][j] != null){
            return memo[i][j];
        }

        boolean firstMatch = i < s.length() && j < p.length() && (s.charAt(i) == p.charAt(j) || p.charAt(j) == '?' || p.charAt(j) == '*');

        boolean res = false;
        if(p.charAt(j) == '*'){
            res = dfs(s, i, p, j + 1, memo) || (firstMatch && dfs(s, i + 1, p, j, memo));
        }else{
            res = firstMatch && dfs(s, i + 1, p, j + 1, memo);
        }

        if(i < s.length() && j < p.length()){
            memo[i][j] = res;
        }
        
        return res;
    }
}

相关文章

网友评论

      本文标题:LeetCode 第 44 题:通配符匹配

      本文链接:https://www.haomeiwen.com/subject/uorxultx.html