【问题标题】:Finding the longest substring in a suffix trie in linear time在线性时间内找到后缀树中最长的子串
【发布时间】:2022-06-30 13:21:05
【问题描述】:

我已经构建了一个后缀特里树,并且正在努力/尝试实现 最长公共子字符串 问题,我将不胜感激。问题看起来像:

给定一个列表lst = ['aab', 'abaa'],使用后缀特里查找线性时间最长的公共子串,即aa

目前我的理解是:

  1. 构造 suffix trie -> 标记每个后缀终止符,它来自哪个字符串

  2. 从它下面的子树中的所有字符串中找到它具有叶节点的最深内部节点

  3. 从这里开始一无所知

    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


【解决方案1】:

@abhinav cs.stackexchange.com/a/105975

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2012-05-15
    • 2011-11-19
    • 2011-05-27
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多