我正在尝试构建一个示例,其中kmp算法 computeLPSArray
阶段必须对特定的I( LPS数组中的单元)多次回溯(请参阅下面的注释)。
对于'AAACAAA'
,它访问回溯部分两次,i = 3
访问一次,i = 7
访问一次
您能帮我构造一个字符串吗?它将访问某个i
的回溯部分3-4次。
def computeLPSArray(pat, M, lps):
len = 0 # length of the previous longest prefix suffix
lps[0]=0 # lps[0] is always 0
i = 1
while i < M:
if pat[i]==pat[len]:
len+=1
lps[i] = len
i+=1
else:
if len!=0:
# backtrack section - When will we get here 3-4 times for the same i???
len = lps[len-1]
else:
lps[i] = 0
i+=1
发布于 2016-05-28 12:36:18
对于'AAAACAA'
,它访问回溯部分的次数为i = 4
3次。
对于'AAAAACA'
,它访问回溯部分的次数为i = 5
4次。
发布于 2016-05-28 12:37:11
正如您已经提到的:示例字符串AAACAAA
已经在i = 3
时访问了回溯部分2次。
如果您想增加访问次数,请增加前缀中的A
数。
AAAAC
将访问回溯部分3次。
https://stackoverflow.com/questions/37498272
复制相似问题