首页 > 其他 > 详细

Leetcode 44 通配符匹配

时间:2020-01-06 20:34:39      阅读:62      评论:0      收藏:0      [点我收藏+]

题目描述:

技术分享图片

 

题解:仿照LCS构建一个dp[i][j],表示s[i-1]与p[j-1]的匹配情况,dp[i][j] == 1 的时候表示完全匹配。状态转移如下:

当p[j-1]==‘*’的时候,要么‘*‘为空,要么‘*’匹配对应j-1位置的字符,也就是说这个时候的dp[i][j]由dp[i-1][j]以及dp[i][j-1]的状态决定;

当p[j-1]!=‘*‘的时候,dp[i][j]的状态由dp[i-1][j-1]以及s[i-1],p[j-1]值的i情况来确定。

 

AC代码如下:

bool isMatch(string s, string p) {
        int Lens = s.length();
        int Lenp = p.length();
        int dp[Lens+1][Lenp+1];
        for(int i=0;i<=Lens;i++)
            for(int j=0;j<=Lenp;j++) dp[i][j] = 0;
        dp[0][0] = 1;
        for(int j=1;j<=Lenp;j++) dp[0][j] = dp[0][j-1] && p[j-1]==*;


        for(int i=1;i<=Lens;i++)
        {
            for(int j=1;j<=Lenp;j++)
            {

                if(p[j-1] == *)
                {
                    dp[i][j] = max(dp[i][j-1],dp[i-1][j]);
                }
                else
                {
                    dp[i][j] = dp[i-1][j-1] && (s[i-1] == p[j-1] | p[j-1] == ? );
                }

            }
        }
        if(dp[Lens][Lenp] == 1)  return true;
        return false;
    }

 

Leetcode 44 通配符匹配

原文:https://www.cnblogs.com/z1141000271/p/12157834.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!