题解 | #字符串通配符#

字符串通配符

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

while True:
    try:
        s1 = input()
        s2 = input()
        m = len(s1)
        n = len(s2)
        dp = [[False for j in range(n+1)] for i in range(m+1)]
        dp [0][0] = True
        # 第0行,空字符无法匹配非空字符,所以第一行为False
        for j in range(1,n+1):
            dp[0][j] = False
        # 第0列,当匹配模式为*或者?时,匹配成功,其余跳出循环
        for i in range(1,m+1):
            if s1[i-1] == '*' or s1[i-1] == '?':
                dp[i][0] = True
            else:
                break
        for i in range(1,m+1):
            for j in range(1,n+1):
                if s1[i-1].lower() == s2[j-1].lower():
                    dp[i][j] = dp[i-1][j-1]
                elif s1[i-1] == '?' and s2[j-1].isalnum():
                    dp[i][j] = dp[i-1][j-1]
                elif s1[i-1] == '*':
                    dp[i][j] = dp[i-1][j] or dp[i][j-1]
        if dp[m][n]:
            print('true')
        else:
            print('false')



    except:
        break

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务