题解 | #字符串通配符#

# 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
全部评论

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务