字符串匹配算法 - 通配符 * 和 ? 的匹配
以下是一个用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 著作权归作者所有。请勿转载和采集!