问题:
我需要符合以下条件的所有字符序列:
>字符序列必须多次出现((LE,1)因此无效).
>字符序列必须长于一个字符((M,2)因此无效).
>字符序列不能是存在相同次数的较长现有序列的一部分(如果(LIO,2)存在,则(LI,2)无效).
因此,如果输入字符串是:KAKAMNENENELIOLELIONEM $
输出将是:
(KA, 2)
(NE, 4)
(LIO, 2)
它还需要快速,它应该能够在合理的时间内解决1000个字符长的字符串.
我尝试过的:
从后缀树获取分支数量:
编辑this后缀树 – 创建librabry(Python-Suffix-Tree),我制作了一个程序,给出了一些错误的结果.
我将此函数添加到suffix_tree.py中的SuffixTree类:
def get_repeated_substrings(self):
curr_index = self.N
values = self.edges.values()
values = sorted(values, key=lambda x: x.dest_node_index)
data = [] # index = edge.dest_node_index - 1
for edge in values:
if edge.source_node_index == -1:
continue
top = min(curr_index, edge.last_char_index)
data.append([edge