题解 | #字符串通配符#

# t = input() 通配符字符串
# p = input() 要匹配的字符串
# m = len(t)
# n = len(p)
# 先处理空字符串:
# (1) t == '',只有当 p ==''时,为True,否则为False
# (2) t!= ''
#     若:p == '':则当t只包含*时,为True,否则为False
#     若:p !='':则需进行匹配判断
#         从右向左进行匹配:
#            当t[m-1] 为数字字母或者为?时:匹配p[n-1]的一个字符,相等为True
#            当t[m-1] 为 *时,分为两种情况
#                忽略这个*:匹配t[0:m-1]和p;即当做0个字符处理这个*
#                计入这个* :匹配t和p[0:n-1];即当做1个或多个字符处理这个*
def tp_mat(t, p):
    m = len(t)
    n = len(p)
    if p == '' and t== '':
        return True
    elif p != '' and t == '':
        return False
    elif p == '':
        if t.replace('*','') == '':
            return True
        else:
            return False
    else:
        if (t[m-1] == '?' and p[n-1].isalnum()) or t[m - 1].lower() == p[n - 1].lower() :
            return tp_mat(t[0:m-1], p[0:n-1])
        elif t[m-1] == '*':
            return tp_mat(t[0:m-1], p) or tp_mat(t, p[0:n-1])
        else:
            return False
while True:
    try:
        t = input()
        p = input()
        re = tp_mat(t, p)
        print('true' if re else 'false')
    except:
        break
全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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