Python 如何有效地创建字符串的前缀失败数组?
我需要创建一个大约100000个字母长的字符串的失败数组,但我的代码似乎要花很长时间才能运行Python 如何有效地创建字符串的前缀失败数组?,python,python-3.x,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 < le
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")
x=input(“::”).replace(“\n”,”).strip()
p=“”
对于范围内的计数(len(x)-1):
计数+=1
myn=0
对于范围内的c(计数):
c+=1
如果x[c:count]==x[:len(x[c:count]),并且myn
有没有办法更有效地做到这一点
编辑:我相信KMP算法可以做到这一点。有人能告诉我怎么做吗?换句话说,结果字符串应该是什么样子的?因此,在每个字符上,它都会找到以该字符结尾的最长子字符串,该字符也是整个字符串的前缀,不包括从头到尾的明显完整字符串。每个字符串后面都有一个空格。换句话说,结果字符串应该是什么样的?因此,在每个字符上,它都会找到以该字符结尾的最长子字符串,该子字符串也是整个字符串的前缀,不包括从头到尾的明显完整字符串。每个后面都有一个空格。