使用python实现后缀数组中的模式搜索功能
我想写一个函数:例如,sequential_research(M,L),它使用研究的原理 sequential在后缀L列表中,返回第一个元组的位置,例如M是的前缀 此元组的后缀(如果存在);否则,函数将返回None 我尝试了这个方法,但只针对一个字符串,而不是一个字符串列表使用python实现后缀数组中的模式搜索功能,python,list,search,design-patterns,Python,List,Search,Design Patterns,我想写一个函数:例如,sequential_research(M,L),它使用研究的原理 sequential在后缀L列表中,返回第一个元组的位置,例如M是的前缀 此元组的后缀(如果存在);否则,函数将返回None 我尝试了这个方法,但只针对一个字符串,而不是一个字符串列表 def get_prefix_arr(pattern, b): prefix_arr = [0] * b n = 0 m = 1 while m != b: if patter
def get_prefix_arr(pattern, b):
prefix_arr = [0] * b
n = 0
m = 1
while m != b:
if pattern[m] == pattern[n]:
n += 1
prefix_arr[m] = n
m += 1
elif n != 0:
n = prefix_arr[n - 1]
else:
prefix_arr[m] = 0
m += 1
return prefix_arr
def KMP_String(pattern, text):
a = len(text)
b = len(pattern)
prefix_arr = get_prefix_arr(pattern, b)
initial_point = []
m = 0
n = 0
while m != a:
if text[m] == pattern[n]:
m += 1
n += 1
else:
n = prefix_arr[n - 1]
if n == b:
initial_point.append(m - n)
n = prefix_arr[n - 1]
elif n == 0:
m += 1
return initial_point
string = "TATCTAGCTA"
pat = "CTA"
initial_index = KMP_String(pat, string)
for i in initial_index:
print("{}: {}".format(i, string[i:]))
我找到了一个解决方案你有没有尝试需要帮助?您能否至少提供一些输入/输出示例?关于允许/应该使用什么方法等,是否有任何限制?这是您没有尝试过的作业吗?请参阅和。您共享的代码到底出了什么问题?