首页 > 其他分享 >44. 通配符匹配

44. 通配符匹配

时间:2022-11-14 20:24:31浏览次数:45  
标签:10 需要 匹配 44 通配符 len range

题目描述

这个题目和之前做的「10. 正则表达式匹配」比较类似,不同的是和?没有关联关系,只用考虑匹配0-多次就行

f1-折半枚举+排序+二分

基本分析

只需要考虑不同的地方,对于*取0到多次的时候,怎么用公式替代枚举?这里还是列出f[i][j]的情况,再用i-1替代i,得到f[i-1][j]的情况,结合两个式子,得到转移方程

代码

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        n, m = len(s), len(p)
        s = ' ' + s
        p = ' ' + p
        f = [[False] * (m+1) for _ in range(n+1)]
        f[0][0] = True

        for i in range(n+1):
            for j in range(1, m+1):
                if i-1 >=0 and (p[j]==s[i] or p[j] == '?'):
                    f[i][j] = f[i-1][j-1]
                elif p[j] == '*':
                        f[i][j] = f[i][j-1] or (i-1>=0 and f[i-1][j])
        return f[n][m]

复杂度

时间:\(状态个数是O(n \cdot m), 转移O(1)\)
空间:\(存状态需要O(n \cdot m)\)

总结

p[j]=*时候,转移方程这块,还是参考10的思路,总的来说更简单一点f[i][j] = f[i][j-1] or f[i-1][j]
需要注意的是上面的边界条件,前一个式子不需要i-1>=0, 而后面需要,所以对i的限制只写到后面
其他需要注意的和t10的情况类似。

标签:10,需要,匹配,44,通配符,len,range
From: https://www.cnblogs.com/zk-icewall/p/16890250.html

相关文章

  • [已满分在线评测] cmu15445 2022 PROJECT #2 B+Tree Index
    CMU154452022PROJECT#2B+TreeIndex前前言本地测试通过是真的比较简单,因为有数据可以单步debug,很快就能定位错误。但是要通过在线评测还是比较痛苦的,没有数据,没办法......
  • 28. 找出字符串中第一个匹配项的下标
    28.找出字符串中第一个匹配项的下标给你两个字符串 haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果 nee......
  • nginx中的location匹配与rewrite重写跳转
    nginx正则表达式^:匹配输入字符串的起始位置$:匹配输入字符串的结束位置*:匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”+:匹配前面的字符一次或......
  • [15-445]B+Tree memo
    B树是一个家族,感觉B+Tree对于喜欢使用MySQL的我来说是最常听说的数据库索引结构之一了。但是我从来没有从头到尾自己实现过一个B+Tree,像类似的数据结构,感觉不真正自......
  • C# vs2019 MSB3644 找不到 .NETFramework,Version=v4.6.2 的引用程序集
    一、前言 从github上clone了Dapper的项目,想来学习学习,F6生成的时候,提示MSB3644找不到.NETFramework,Version=v4.6.2的引用程序集的错误二、解决方案1.百度......找......
  • 洛谷-2044
    洛谷-2044思路首先对与递推式\(x_n=(a*x_{n-1}+c)\)%\(mod\),发现\(c\)的存在使得不能直接使用整数快速幂求出\(x_n\),因为\(x_n\)是关于\(a,c,x0\)的\(n\)次......
  • P8844 [传智杯 #4 初赛] 小卡与落叶
    简要题意给出一个\(n\)个节点的以\(1\)为根的树,每一个节点\(i\)带权\(w_i\),初始时所有节点的权均为\(0\)。有\(m\)个操作,支持以下操作:1x,对于所有树上节点\(......
  • 第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式
    第四十六章开发自定义标签-标签匹配操作中的运行时表达式指定标签的属性值,方法是将属性值放在方括号内,标签名称后是[]。<csr:rule>标记的match属性定义了CSP编译器......
  • [15-445]Hash tabels memo
    这一章大概是一个hashtables的科普。因为刚上课不久andy就说我们自己不会去实现一个这玩意儿。现在有非常优秀的方案,你应该去使用那个最好的方案,那个方案把其他方案都......
  • 44. 生命周期
    vue的声明周期分为4个阶段,8个钩子函数;第一阶段:创建;beforeCreate:此时的data和method方法未定义undefined created:此时的data数据和methods方法已经定义,......