[动态规划] leetcode 44 Wildcard Matching

Posted fish1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[动态规划] leetcode 44 Wildcard Matching相关的知识,希望对你有一定的参考价值。

problem:https://leetcode.com/problems/wildcard-matching/

        用记忆化搜索做的,不容易出错:

class Solution 
public:
    vector<vector<int>> dp;
    bool isMatch(const string& s, const string& p, int i, int j)
    
        if(i >= s.size() && j >= p.size()) return true;
        if(j >= p.size()) return false;
        if(dp[i][j] != 2) return dp[i][j];
        if(i < s.size() && (s[i] == p[j] || p[j] == ?))
        
            return dp[i][j] = isMatch(s, p, i + 1, j + 1);
        
        if(p[j] == *)
        
            for(int k = i; k <= s.size(); k++)
            
                if(isMatch(s, p, k, j + 1)) return dp[i][j] = true;
            
        
        return dp[i][j] = false;
    
    bool isMatch(string s, string p) 
        dp.resize(s.size() + 1, vector<int>(p.size() + 1, 2));
        return isMatch(s, p, 0, 0);
    
;

 非递归:

class Solution 
public:
    vector<vector<bool>> dp;
    bool isMatch(string s, string p) 
        dp.resize(s.size() + 1, vector<bool>(p.size() + 1));
        
        dp[0][0] = true;
        for(int i = 1;i <= s.size();i++)
        
            dp[i][0] = false;
        
        for(int j = 0;j < p.size(); j++)
        
            if(p[j] == *) dp[0][j + 1] = true;
            else break;
        
        for(int i = 0;i < s.size();i++)
        
            for(int j = 0;j < p.size();j++)
            
                if(p[j] == *)
                
                    dp[i + 1][j + 1] = dp[i + 1][j] || dp[i][j + 1];
                
                else
                
                    dp[i + 1][j + 1] = (s[i] == p[j] || p[j] == ?) && dp[i][j]; 
                
            
        
        return dp[s.size()][p.size()];
    
;

 

以上是关于[动态规划] leetcode 44 Wildcard Matching的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode44——用搜索的思路去理解动态规划算法

点杀dp算法(动态规划)——LeetCode白手起家成股神

[leetcode2]用动态规划解字符串相关的问题

动态规划:leetcode题库第四十四题

leetcode44. Wildcard Matching

Leetcode 动态规划刷题总结