侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 44. 通配符匹配

Hope
2022-02-13 / 0 评论 / 0 点赞 / 404 阅读 / 614 字
温馨提示:
本文最后更新于 2022-02-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 44. 通配符匹配

给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。

'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串(包括空字符串)。
两个字符串完全匹配才算匹配成功。

image.png

代码:

class Solution {
public:
    bool isMatch(string s, string p) {

        int n=s.size(),m=p.size();
        s='0'+s,p='0'+p;
        vector<vector<bool>> f(n+1,vector<bool>(m+1));

        f[0][0]=true;//加了 ‘ ’
        //加了 ‘ ’ 不一定是不匹配的 "aa" "*"
        //for(int i=0;i<n;i++) f[i][0]=false;

        //f[0][i]可能是有意义的 比如s ‘’ p *
        //但是 f[i][0] 一定是没有意义的 p[0]=' '
        for(int i=0;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(p[j] == '*'){
                    f[i][j]=f[i][j-1] || (i && f[i-1][j]);
                }
                else{
                    f[i][j]=(s[i] == p[j] || p[j] == '?') &&(i && f[i-1][j-1]);
                }
            }
        }
        return f[n][m];

    }
};

0

评论区