【发布时间】:2022-06-30 13:21:05
【问题描述】:
我已经构建了一个后缀特里树,并且正在努力/尝试实现 最长公共子字符串 问题,我将不胜感激。问题看起来像:
给定一个列表lst = ['aab', 'abaa'],使用后缀特里查找线性时间最长的公共子串,即aa
目前我的理解是:
-
构造 suffix trie -> 标记每个后缀终止符,它来自哪个字符串
-
从它下面的子树中的所有字符串中找到它具有叶节点的最深内部节点
-
从这里开始一无所知
class SuffixTrie(object): def __init__(self,t): """ Make suffix trie from t """ # terminator symbol t += '$' self.root = {} for i in range(len(t)): # for each suffix cur = self.root for c in t[i:]: # for each character in i'th suffix if c not in cur: cur[c] = {} # add outgoing edge if necessary cur = cur[c]
谢谢
【问题讨论】:
标签: python algorithm data-structures