NO44. 通配符匹配

复制代码
#和之前通配符匹配很像,dp的思路
class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        vertical = len(p)+1 #纵向的长度,由于有初始start因此加一
        level = len(s)+1
        if set(p) == {"*"}: return True # *可以匹配包括空字符
        #建表
        table = [[False]*level for i in range(vertical)] #初始化全为False
        table[0][0] = True     
        if p.startswith('*'):
            table[1] = level*[True]
        for i in range(1,vertical):
            path = False
            for j in range(1,level):
                if p[i-1]=='*': #判断出现'*'情况
                    if table[i-1][0]==True: #如果第一行为*,那全为True
                        table[i] = [True]*level
                    if table[i-1][j]: #如果上一行为True,令标志True
                        path = True
                    if path:#只要顶上有了True,就可以开通*接下来的所有道路  
                        table[i][j]=True
                elif p[i-1] == "?" or p[i-1]==s[j-1]:#先判断字母是否符合
                    table[i][j] = table[i-1][j-1] #再看左上方格子是不是T
        return table[vertical-1][level-1]
#https://leetcode.cn/problems/wildcard-matching/solution/yi-ge-qi-pan-kan-dong-dong-tai-gui-hua-dpsi-lu-by-/
#该博主的dp讲法很清晰
复制代码

 

 
posted @   是冰美式诶  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示