⚠️ 模式越长,暴力涨多少

👁️ 0 人浏览 💬 0 人评论 ❤️ 添加收藏

同一段文本(24 个 a),模式分别是 4、6、8 个 a。数一数暴力各比了多少次:

T24 = "a" * 24

def brute_cmp(t, p):
    c = 0
    for i in range(len(t) - len(p) + 1):
        j = 0
        while j < len(p):
            c += 1
            if t[i + j] != p[j]:
                break
            j += 1
    return c

def build_next(p):
    f = [0] * len(p)
    k = 0
    for i in range(1, len(p)):
        while k and p[i] != p[k]:
            k = f[k - 1]
        if p[i] == p[k]:
            k += 1
        f[i] = k
    return f

def kmp_cmp(t, p):
    f = build_next(p)
    c = 0
    k = 0
    for i in range(len(t)):
        while k and t[i] != p[k]:
            k = f[k - 1]
            c += 1
        c += 1
        if t[i] == p[k]:
            k += 1
        if k == len(p):
            k = f[k - 1]
    return c

print("/".join(str(brute_cmp(T24, "a" * m)) for m in (4, 6, 8)))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论