leetcode 通配符匹配_部分匹配查询中有关通配符

leetcode 通配符匹配_部分匹配查询中有关通配符给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”p = “*

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

说明:

s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。

示例 1:

输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。
示例 2:

输入:
s = "aa"
p = "*"
输出: true
解释: '*' 可以匹配任意字符串。
示例 3:

输入:
s = "cb"
p = "?a"
输出: false
解释: '?' 可以匹配 'c', 但第二个 'a' 无法匹配 'b'。
示例 4:

输入:
s = "adceb"
p = "*a*b"
输出: true
解释: 第一个 '*' 可以匹配空字符串, 第二个 '*' 可以匹配字符串 "dce".
示例 5:

输入:
s = "acdcb"
p = "a*c?b"
输出: false

题解
f[i][j]代表s[1:i],p[1:j]是否匹配,如果p[j] == ‘?’或者p[j] == s[i]的话,那么p[j]一定要匹配字母,如果p[j] 是一个字母且p[j] != s[i]那么匹配失败,如果p[j] == ‘*’的话那么可以选择匹配一个字符或者不匹配。

class Solution { 
   
public:
    bool isMatch(string s, string p) { 
   
        int n = s.size(),m = p.size();
        vector<vector<int> >f(n + 1,vector<int>(m + 1));
        f[0][0] = true;
        for(int i = 1;i <= m;i ++){ 
   
            if(p[i - 1] == '*')f[0][i] = f[0][i - 1];
        }
        for(int i = 1;i <= n;i ++){ 
   
            for(int j = 1;j <= m;j ++){ 
   
                if(s[i - 1] == p[j - 1] || p[j - 1] == '?')f[i][j] = f[i - 1][j - 1];
                else if(p[j - 1] != '*')f[i][j] = false;
                else{ 
   
                    f[i][j] = f[i - 1][j] | f[i][j - 1];
                }
            }
        }

        return f[n][m];
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168720.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • bwapp安装教程_下载安装

    bwapp安装教程_下载安装1、什么是BWAPP?这就不用多说了吧,天知地知,你知我知。直接走下一步。2、去哪里下载?https://sourceforge.net/projects/bwapp/,进去点击download下载。3、打开BWAPP直接双击下面这个文件打开就可以了,打开后就是这个样子4、查看虚拟机ip,5、浏览器访问:http://192.168.43.116/b…

  • 踩坑(node配置淘宝镜像)

    作为一名菜鸟级别的选手,搭建vue.js时,淘宝镜像安装一直报错,我真的感觉头皮发麻,要裂开了的感觉。遇到的第(1)个问题是:提示未安装python,安装python3又提示找不到python2,然后又安装了python2;//////////////////////////所以,这里一定要安装python2////////////////////////////下载地址<页面加载比较慢,请耐心等待>:https://www.python….

  • 小型酒店管理系统毕业论文_简易酒店管理系统

    小型酒店管理系统毕业论文_简易酒店管理系统一需求:编写程序模拟酒店管理系统:预订和退订以及查看所有房间1需要有一个酒店类2需要有一个房间类3需要有一个客户端类publicclassTest{}二分析:客户端:1先打印所有房间2等待用户输入,根据输入情况判断是预订还是退订3等待用户输入房间号4调用酒店的预订/退订方法把房间号传入完成预订/退订功能…

  • 纯CSS画三角形

    纯CSS画三角形之前遇到过的问题如果查了然后懂了,然后没有及时复盘思考,就很容易还回去,今天把许久之前的这个知识点再整理一下,一是加深自己的记忆,二也是让初学者更容易懂。首先,创建一个空的div&lt;divclass="triangle"&gt;&lt;/div&gt;然后,CSS处理它的边框,给它不一样的颜色,好观察.triangle{border-left:100pxs…

  • windows如何远程centos桌面_windows远程桌面命令

    windows如何远程centos桌面_windows远程桌面命令作者:【吴业亮】云计算开发工程师博客:http://blog.csdn.net/wylfengyujiancheng前提:CentOS安装桌面,如果无桌面,请执行#yum-ygroupsinstall”GNOMEDesktop”#startx配置源#yuminstallepel*-y安装xrdp#yum–enablerepo=epel-yinst…

  • FileInputFormat

    FileInputFormat最顶级是InputFormat抽象类,该类定义了两个方法,方法getSplits是负责切分输入文件(们)的,把很多的输入文件(们)切分成很多的输入分片,切分规则就是在这里定义的,每个InputSpl

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号