小黑科二通过,开启第二学期的上班,带着呆呆完整跑下了南二环,申请出京十分恐惧,去大黑驴屋子里吃大黑驴做的饭感慨厨艺高超,买了前往大兴机场高铁的leetcode之旅:44. 通配符匹配

小黑独立做出一道困难题,继续开启力扣之旅,干就完了

小黑代码

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        # 字符串和模式串长度
        len_s = len(s)
        len_p = len(p)
        # 初始化动态规划数组
        dp = [[False]*(len(s)+1) for _ in range(len_p+1)]
        dp[0][0] = True
        # 开始动态规划操作
        for i in range(1, len_p+1):
            for j in range(len_s+1):
                # 末端字符匹配的情况下(保证j>0)
                if j and (p[i-1] == s[j-1] or p[i-1] == '?'):
                    dp[i][j] = dp[i-1][j-1]
                # 模式串带*
                elif p[i-1] == '*':
                    # 考虑p: (xx*) 与s: (xx)的情况
                    dp[i][j] = dp[i-1][j]
                    # j>0需考虑比较p: (xx)*与s: (xx)a的括号里的内容
                    if j:
                        dp[i][j] = dp[i-1][j-1] or dp[i][j-1] or dp[i][j]

        return dp[len_p][len_s]

在这里插入图片描述

动态规划

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        # 模式串与字符串长度
        len_s = len(s)
        len_p = len(p)
        # 初始化动态规划数组
        dp = [[False] * (len_s+1) for _ in range(len_p+1)] 
        # 初始值
        dp[0][0] = True
        # 模式串以一个或者多个“*”为开头,可以匹配空字符(数组对应为True)
        for t in range(len_p):
            if p[t] != '*':
                break
            dp[t+1][0] = True
        # 开始动态规划
        for i in range(1, len_p+1):
            for j in range(1, len_s+1):
                # 模式串的末端字符为*
                if p[i-1] == '*':
                    dp[i][j] = dp[i-1][j] or dp[i][j-1] or dp[i-1][j-1]
                # 相等或者模式串末端为'?'
                elif p[i-1] == s[j-1] or p[i-1] == '?':
                    dp[i][j] = dp[i-1][j-1]
        return dp[len_p][len_s]

在这里插入图片描述

贪心匹配

class Solution:
    def isMatch(self, s: str, p: str) -> bool:
        # 字符匹配函数
        def match(s_c, p_c):
            if s_c == p_c or p_c == '?':
                return True
            return False
        # 匹配结尾,直到碰到p中为*
        sRight = len(s)
        pRight = len(p)
        # 将p变成xxxx*xxx*xx*的情况
        while pRight > 0 and p[pRight-1] != '*':
            # 不匹配的情况,或者是s已经匹配到头而p还有
            if sRight == 0 or (not match(s[sRight-1], p[pRight-1])):
                return False
            sRight -= 1
            pRight -= 1
        # p已经变成xxxx*xxx*xx*的形式
        pRecord = -1
        sRecord = -1
        pIndex = 0
        sIndex = 0
        while pIndex < pRight and sIndex < sRight:
            # p碰到了*,开始在s中匹配下一个子序列
            if p[pIndex] == '*':
                pIndex += 1
                pRecord = pIndex
                sRecord = sIndex
            # 匹配的情况,指针同时往前走
            elif match(s[sIndex], p[pIndex]):
                pIndex += 1
                sIndex += 1
            # 如果不匹配,重新匹配p中的当前子序列
            elif pRecord!=-1 and sRecord+1 < sRight:
                sRecord += 1
                sIndex = sRecord
                pIndex = pRecord
            else:
                return False
        # p已经匹配完,而s没有匹配完
        if pRight==0 and sRight!=0:
            return False
        # s匹配完,p没匹配完,判断是否只剩下*
        
        for i in range(pIndex, pRight):
            if p[i] != '*':
                return False
        return True

在这里插入图片描述

小黑生活

准备去考科二

在这里插入图片描述

科二通过,等回去的班车,咖啡厅里刷刷题

在这里插入图片描述

东方时尚驾校环境

在这里插入图片描述

回去吃个凉菜和牛肉面

在这里插入图片描述
在这里插入图片描述

科二满分

在这里插入图片描述

来罐可乐

在这里插入图片描述

跟呆呆去跑步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐干饭

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

年后上班第一天

在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述

晚餐干饭

在这里插入图片描述
在这里插入图片描述

肩颈舒展瑜伽课

在这里插入图片描述

晚间跑步

在这里插入图片描述

早餐干饭

在这里插入图片描述
在这里插入图片描述

简单学学强化学习

在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

餐后来个牛奶

在这里插入图片描述

午后喜茶遛弯

在这里插入图片描述
在这里插入图片描述

麦当劳晚饭

在这里插入图片描述

瑜伽肩颈理疗

在这里插入图片描述

麦当劳早餐

在这里插入图片描述

南二环团跑

在这里插入图片描述

跑后喜茶

在这里插入图片描述

南二环团照

在这里插入图片描述

化一块牛肉

在这里插入图片描述

肩颈舒展团课

在这里插入图片描述

去大黑驴出租屋子里吃大黑驴做的饭,真不错

在这里插入图片描述
在这里插入图片描述

麦当劳早餐

在这里插入图片描述

钢琴学习C大调音阶

在这里插入图片描述

学完钢琴跑回家

在这里插入图片描述

整块牛排

在这里插入图片描述

两节瑜伽课打卡

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐干饭

在这里插入图片描述
在这里插入图片描述

应届生同事从重庆带来的底料

在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述

午后喜茶在这里插入图片描述

晚餐干饭

在这里插入图片描述
在这里插入图片描述

没吃饱,再来个板烧

在这里插入图片描述

精准正位瑜伽课打卡

在这里插入图片描述

G大调音阶打卡

在这里插入图片描述

随身wifi又连不上了,绝望

在这里插入图片描述

晚间跑步

在这里插入图片描述

买了从西站到大兴机场的高铁,准备去长沙

在这里插入图片描述

早餐干饭

在这里插入图片描述
在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

午后喜茶散步

在这里插入图片描述
在这里插入图片描述

申请出京,要挨批了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

晚餐干饭

在这里插入图片描述
在这里插入图片描述

腰腹塑性团课

在这里插入图片描述

晚间跑步

在这里插入图片描述

辣酱到了

在这里插入图片描述

洗面奶到了

在这里插入图片描述

呷哺麻酱到了,涮个肉吃

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐干饭

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

行使投票权

在这里插入图片描述
在这里插入图片描述

午餐干饭

在这里插入图片描述
在这里插入图片描述

午休河边溜溜

在这里插入图片描述
在这里插入图片描述

开始Vue学习

在这里插入图片描述

晚餐干饭

在这里插入图片描述
在这里插入图片描述

延时更新,下期更新小黑黑准备前往长沙

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值