以下是一个用Python编写的解决方案,可以判断两个字符串是否匹配:

def is_match(pattern, text):
    # 使用动态规划的方法进行匹配
    # 创建一个二维数组,用于存储匹配结果
    dp = [[False] * (len(text) + 1) for _ in range(len(pattern) + 1)]
    
    # 初始化边界条件,空模式和空文本匹配
    dp[0][0] = True
    
    # 处理模式中以'*'开头的情况
    for i in range(1, len(pattern) + 1):
        if pattern[i-1] == '*':
            dp[i][0] = dp[i-1][0]
    
    # 填充动态规划数组
    for i in range(1, len(pattern) + 1):
        for j in range(1, len(text) + 1):
            # 如果当前字符相等或模式字符为'?'
            # 则当前位置匹配结果与前一个位置相同
            if pattern[i-1] == text[j-1] or pattern[i-1] == '?':
                dp[i][j] = dp[i-1][j-1]
            # 如果当前模式字符为'*'
            # 则可以选择匹配0个字符,或匹配1个或多个字符
            elif pattern[i-1] == '*':
                dp[i][j] = dp[i-1][j] or dp[i][j-1]
    
    # 返回匹配结果
    return dp[-1][-1]

# 读取输入
pattern = input().strip()
text = input().strip()

# 判断是否匹配
if is_match(pattern, text):
    print('yes')
else:
    print('no')

你可以将两个字符串分别输入到两行中,然后运行该代码以判断两个字符串是否匹配。如果匹配,则输出'yes',否则输出'no'。

字符串匹配算法 - 通配符 * 和 ? 的匹配

原文地址: https://www.cveoy.top/t/topic/bchs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录