题目链接

难度:困难       类型: 动态规划

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

'?' 可以匹配任何单个字符。

'*' 可以匹配任意字符串(包括空字符串)。

两个字符串完全匹配才算匹配成功。

说明:

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 = "ab"

输出: true

解释: 第一个 '' 可以匹配空字符串, 第二个 '' 可以匹配字符串 "dce".

示例5

输入:

s = "acdcb"

p = "a*c?b"

输入: false

解题思路

状态转移方程:

如果p[i] == s[j] 或 p[i]=='?': dp[i+1][j+1] = dp[i][j]

如果 p[i] == '*': dp[i+1][j+1] = dp[i+1][j] or dp[i][j+1]

dp的第一列要特殊处理,针对首字符为‘*’的情况

代码实现

class Solution(object):

def isMatch(self, s, p):

"""

:type s: str

:type p: str

:rtype: bool

"""

m, n = len(s), len(p)

dp = [[False] * (m+1) for _ in range(n+1)]

dp[0][0] = True

for i in range(n):

if p[i] == '*':

dp[i+1][0] = dp[i][0]

for i in range(n):

for j in range(m):

if p[i] == s[j] or p[i]=='?':

dp[i+1][j+1] = dp[i][j]

elif p[i] == '*':

dp[i+1][j+1] = dp[i+1][j] or dp[i][j+1]

return dp[-1][-1]

python 通配符域名_LeetCode-python 44.通配符匹配相关推荐

  1. python 题库自动答题,自动匹配题库_如何用python写一个从题库自动匹配的答题脚本_淘题吧...

    A. web数据库题目:根据用户输入的用户名和密码于数据库中的记录是否匹配制作一个用户登录模块 http://blog.csdn.net/love_leve/article/details/43226 ...

  2. Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略

    Python语言学习:Python语言学习之正则表达式常用函数之re.search方法[输出仅一个匹配结果(内容+位置)].re.findall方法[输出所有匹配结果(内容)]案例集合之详细攻略 导读 ...

  3. 通配符SSL证书知识 怎样获取通配符域名证书

    什么是通配符证书 通配符证书又可以称作:通配符ssl证书,通配符域名证书,泛域名证书,Wildcard certificate 申请免费的通配符证书:来此加密. 在计算机网络中,通配符证书是一个可以被 ...

  4. Access-Control-Allow-Origin这个header这个头不能设置通配符域名

    这个header属性,要么设置为*,即任何域名来源都行,要么就只能设置为一个或多个,确定的域名,不能使用通配符域名 转载于:https://www.cnblogs.com/abcbuzhiming/p ...

  5. 获取顶级域名与一级域名的python库-tld

    可以参考:https://pypi.org/project/tld/ 获得顶级域名与一级域名的python库.get_tld与get_fld from tld import get_tld url = ...

  6. boost python导出c++ map_使用Boost生成的Python模块:与C++签名不匹配

    我正在使用名为Mitsuba的软件.它附带了一个用Boost包装的Python实现. Python中的这一行:使用Boost生成的Python模块:与C++签名不匹配 scene = SceneHan ...

  7. python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...

    我从网上找了一段通过python进行域名分析的代码,但是都是缩进错误,想找大神帮我看看,问题出在哪里. mport sys, urllib import datetime,time def getDa ...

  8. certbot申请通配符域名证书

    certbot官网 下载certbot # 下载certbot-auto wget -c https://dl.eff.org/certbot-auto -P /usr/local/bin # 设置可 ...

  9. python实现括号匹配算法_Python实现括号匹配方法详解

    这篇文章主要简介了python实现括号匹配方法详解,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 1.用一个栈[python中可以用List]就可 ...

  10. 如何解决python安装的库因版本不匹配而无法使用

    python有的库与python版本不匹配时可能无法使用.所以我们可以通过语句: import pip print(pip.pep425tags.get_supported()) 来查看python的 ...

最新文章

  1. LeetCode 658. 找到 K 个最接近的元素(二分查找)
  2. html5鼠标下拉浮窗固定,【前端技术】vue-floating-menu可拖拽吸附的浮窗菜单
  3. 字段连接select语句
  4. 乐高机器人编程自学入门
  5. SIM-MICRO-SIM- NANO SIM 区别
  6. 软件生命周期是指什么?
  7. 基于模糊聚类的图像分割
  8. 信息学奥赛 python 教程_浦东信息学奥赛课程价格表,Python编程课程
  9. singleLine属性
  10. 眉目传情之匠心独运的kfifo
  11. java.io.IOException:Permission denied
  12. RN Error: 无法获取此包的编译时间戳。请更新react-native-update到最新版本后重新打包上传。
  13. 诺丁汉大学计算机科学世界排名,2020年诺丁汉大学计算机科学专业研究生申请条件及世界排名|学费介绍...
  14. Unity的Socket网络编程
  15. android listview固定内容,android ListView详解
  16. 汉家江湖无名幻境服务器找不到,汉家江湖无名幻境怎么打开_汉家江湖无名幻境开启方式攻略_玩游戏网...
  17. 什么是SOA架构?为什么使用SOA架构?
  18. 2012 比较全的工资待遇搜集
  19. 监听文本框输入开发仿新浪微博限制输入字数的textarea插件。
  20. 麦克纳姆轮转速计算(运动解算)(_学习笔记__)

热门文章

  1. 拿着 22 万美元年薪,混得还不如实习生?
  2. 技术大佬:我去,你写的 switch 语句也太老土了吧!
  3. 什么是 CD 管道?一文告诉你如何借助 Kubernetes、Ansible 和 Jenkins 创建 CD 管道!...
  4. 华为在 5G 初期不考虑盈利;​网易发布数据中台;微软 SQL Server 2019 免费支持 Java | 极客头条...
  5. 崛起的 Python,真的影响了 76 万人?
  6. 百年 IBM 如何用代码拯救生命
  7. 微信封杀百度红包;刘强东新开公司;库克“iPhone 表现不好”| 极客头条
  8. 当我们在谈论单测时我们在谈论什么
  9. 华为进军美国受挫:竟被美运营商巨头临时放鸽子
  10. win7工作组无法查看计算机名,WIN7下无法查看工作组计算机怎么办