【问题标题】:Brute Force Pattern Algorithm in PythonPython中的蛮力模式算法
【发布时间】:2021-11-19 19:50:22
【问题描述】:

使用 Python,您将如何实现暴力字符串匹配算法。该算法将解决字符串匹配问题。字符串匹配问题是在文本(n 个字符的字符串)中找到一个模式(m 个字符的字符串)。 使用以下测试用例的输出验证您的代码:

测试用例#1: 文字:10110100110010111 图案:001011

测试用例#2: 文字:拥有快乐的童年永远不会太晚 模式:更快乐

测试用例#3: 文本:NOBODY_NOTICED_HIM 模式:不是

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python design-patterns matching brute-force


【解决方案1】:

你可以使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多