如何有效地创建字符串的前缀失败数组?

时间:2015-11-01 22:34:41

标签: python python-3.x

我需要创建一个大约100000个字母长的字符串的失败数组,但我的代码似乎需要永远运行。

x = input("::").replace("\n","").strip()
p = ""
for count in range(len(x)-1):
    count+=1
    myn = 0
    for c in range(count):
        c+=1
        if x[c:count] == x[:len(x[c:count])] and myn < len(x[c:count]):
            myn = len(x[c:count])
            break
    p += str(myn)+" "
print(p+"0")

有没有办法更有效地做到这一点?

编辑:我相信称为KMP算法的东西会这样做。有人能告诉我怎么做吗?

0 个答案:

没有答案