告诉我一个算法,该算法接收字符串作为输入并将其与模板进行比较,如果字符串和模板相同则返回 true,如果不同则返回 false。模板中使用的特殊字符:
*- 替换为任意数量的字符,包括0个字符
? - 仅替换 1 个字符。
任何语言的示例都可以,但 Python 更好。示例解决方案可能如下所示:
print(match_pattern("abc", "a?")) # Выведет False
print(match_pattern("abc", "ab?")) # Выведет True
print(match_pattern("abc", "a?b")) # Выведет False
print(match_pattern("abc", "???")) # Выведет True
print(match_pattern("abc", "a?c")) # Выведет True
print(match_pattern("abc", "a*")) # Выведет True
print(match_pattern("abc", "ab*")) # Выведет True
print(match_pattern("abc", "ab")) # Выведет False
print(match_pattern("abc", "**")) # Выведет True
print(match_pattern("abc", "ac")) # Выведет False
print(match_pattern("abc", "ac*")) # Выведет False
例如,仅处理问题的代码如下所示:
def match_pattern(input_string, pattern):
# Функция для проверки соответствия строки шаблону
def is_match(s, p):
# Инициализация индексов для строк
i, j = 0, 0
n, m = len(s), len(p)
super = False
# Проверка каждого символа шаблона
while j < m:
if p[j] == '?' or s[i] == p[j]:
i += 1
else:
return False
j += 1
return i == n
# Возвращаем результат проверки соответствия всей строки шаблону
return is_match(input_string, pattern)
这似乎是最简单的:https://docs.python.org/3/library/fnmatch.html