Python 中的蛮力模式算法
Brute Force Pattern Algorithm in Python
使用Python,你将如何实现一个强力字符串匹配算法。该算法将解决字符串匹配问题。字符串匹配问题是在文本(n 个字符的字符串)中找到一个模式(m 个字符的字符串)。
使用以下测试用例的输出验证您的代码:
测试用例#1:
文字:10110100110010111
图案:001011
测试用例#2:
正文:快乐的童年永远不晚
模式:更快乐
测试用例#3:
文本:NOBODY_NOTICED_HIM
模式:NOT
您可以使用
pattern in text
为此。如果您需要从头开始实现整个算法,这也很容易:
def contains(text, pattern):
for i in range(len(text)):
for j in range(len(pattern)):
if i + j >= len(text):
break
if text[i + j] != pattern[j]:
break
else:
return True
return False
用法
contains('10110100110010111', '001011') # True
contains('It is never too late to have a happy childhood', 'happier') # False
应该注意的是,还有其他算法会更有效,例如著名的 Knuth-Morris-Pratt algorithm。
使用Python,你将如何实现一个强力字符串匹配算法。该算法将解决字符串匹配问题。字符串匹配问题是在文本(n 个字符的字符串)中找到一个模式(m 个字符的字符串)。 使用以下测试用例的输出验证您的代码:
测试用例#1: 文字:10110100110010111 图案:001011
测试用例#2: 正文:快乐的童年永远不晚 模式:更快乐
测试用例#3: 文本:NOBODY_NOTICED_HIM 模式:NOT
您可以使用
pattern in text
为此。如果您需要从头开始实现整个算法,这也很容易:
def contains(text, pattern):
for i in range(len(text)):
for j in range(len(pattern)):
if i + j >= len(text):
break
if text[i + j] != pattern[j]:
break
else:
return True
return False
用法
contains('10110100110010111', '001011') # True
contains('It is never too late to have a happy childhood', 'happier') # False
应该注意的是,还有其他算法会更有效,例如著名的 Knuth-Morris-Pratt algorithm。