暴力匹配

暴力匹配(Brute Force,BF)又称为蛮力匹配或朴素匹配算法,自左向右,以字符为单位,依次移动模式串,直到在某个位置,发现匹配。

def match(P, T):
    n = len(T)  # T[i]与P[0]对齐
    m = len(P)  # T[i+j]与P[j]对齐
    for i in range(n-m+1):  # T从第i个字符起,与
        for j in range(m):  # P中对应的字符逐个比对
            if T[i+j] != P[j]:  # 若失配,P整体右移一个字符,重新比对
                break
        if j == m-1:  # 找到匹配子串
            break
    return i


# 测试
P = '1011'
T = '1001101101'
print(match(P, T))

暴力匹配的最坏时间复杂度为 \(O(n\times m)\),\(|\sum|\) 越小,最坏情况出现的概率越高,\(m\) 越大,最坏情况的后果更加严重。