LeetCode 44 Wildcard Matching

题目

我的学习计划: LeetCode千题计划 这是完成到一百题,纪念一下!

这道题目有坑,用c++会卡超时O(n*m)

但是用别的语言就不会。坑死我了。

我用动态规划,和DFS剪枝,总是给我超时,结果换种语言重新写一下就过了。

真辣鸡

C# 动态规划解法


public class Solution {
    
    public int[,] dp = new int[3005,3005];
    public bool IsMatch(string s, string p) {
        
         if(s==""&&isEmpty(p))
            return true;
        if(s==""&&!isEmpty(p))
            return false;
        if(s!=""&&p=="")
            return false;
        
        string p2="";
        for(int i=0;i0&&p2[p2.Length-1]=='*'&&p[i]=='*')
                continue;
            
            p2+=p[i];
        }
        p=p2;
        
        for(int i=0;i0 && p[i-1]=='*' && dp[0,i-1]==1 &&( p[i]==s[0]||p[i]=='?'))
                dp[0,1]=1;
            if(i==0&&(p[i]==s[0]||p[i]=='?'))
                dp[0,i]=1;
            
        }
        
        for(int i=0;i=0;k--)
                    {
                        if(dp[k,j-1]==1){
                            dp[i,j]=1;
                            break;
                        }
                    }
                    
                    if(dp[i,j-1]==1)
                        dp[i,j]=1;
                }
                
            }
        }
        
        if(dp[s.Length-1,p.Length-1]==1)
            return true;
        else
            return false;
    }
    
    public  bool isEmpty(string p){
        for(int i = 0; i < p.Length; i++){
            if(p[i] != '*') return false;
        }
        return true;
    }
}

你可能感兴趣的:(LeetCode 44 Wildcard Matching)