题解 | #字符串通配符#

字符串通配符

http://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036

def match(p, s):
    m, n = len(p), len(s)
    '''
        初始化边界:
        1、dp[0][0] = True,空模式空字符串,匹配成功;
        2、dp[0][j] = False,空模式无法匹配非空字符串;
        3、dp[i][0]不确定,只有模式为星号*时,才能匹配空字符串,即模式p前i个字符均为星号*。
    '''
    dp = [[False] * (n+1) for _ in range(m+1)]
    dp[0][0] = True
    for i in range(1, m+1):
        if p[i-1] == '*':
            dp[i][0] = True
        else:
            break
    for i in range(1, m+1):
        for j in range(1, n+1):
            if p[i-1] == '*':
                dp[i][j] = dp[i-1][j] or dp[i][j-1]
            elif p[i-1] == '?' and s[j-1].isalnum():
                dp[i][j] = dp[i-1][j-1]
            elif s[j-1].lower() == p[i-1].lower():
                dp[i][j] = dp[i-1][j-1]
    
    return dp[m][n]

while True:
    try:
        pattern, string = input(), input()
        if match(pattern, string):
            print('true')
        else:
            print('false')
    except:
        break
全部评论
大佬能解释下,第15行的break是什么作用嘛
点赞 回复 分享
发布于 2022-05-05 14:49
* . 不行
点赞 回复 分享
发布于 2023-06-13 18:47 香港
匹配符是*是有三种情况,0个,1个,多个,你的代码里面应该再加一个dp【i-1】【j-1】才能全部通过
点赞 回复 分享
发布于 2023-03-15 16:04 湖北
第19行为什么是两个值赋值给一个变量,没看懂
点赞 回复 分享
发布于 2022-09-30 23:43 江苏
这个代码有疏漏的地方
点赞 回复 分享
发布于 2022-07-29 21:41
'*'情况判断有误,判别式应该改成if p[i - 1] == '*' and (s[j - 1].isalnum() or dp[i-1][j])
点赞 回复 分享
发布于 2022-07-23 15:41
这操作666
点赞 回复 分享
发布于 2022-04-02 16:27

相关推荐

就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司8个岗位
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客96559368...:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
程序员饺子:正常 我沟通了200多个 15个要简历 面试2个 全投的成都的小厂。很多看我是27直接不会了😅
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
评论
20
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务