找到字典中包含的最长前缀

时间:2012-04-14 11:51:11

标签: c++ algorithm data-structures zip

我正在实施Lempel-Ziv压缩,并且会想到一个问题。

给出'字典'和一串字符。我希望能够计算字符串中包含的最长前缀og。

给出了字符串:

0 : AABB
1 : ABA
2 : AAAB

和查询字符串'AABBABA'我希望能够进行返回'0'的查找,这应该在时间线性上与前缀的长度完成。

接下来,我希望能够在常量时间内将新前缀“AABBAB”添加到字典中。

这样做有标准的,简单的方法/算法吗?

我最初的想法是使用指针列表构建一个标准的n路树,然后搜索它?

1 个答案:

答案 0 :(得分:3)

您正在描述一个简单的trie查找,但即使有多余的字符,您也会返回一个叶子节点。

不确定你在使用n路树的想法,但很可能它完全相同,因为它是显而易见的解决方案:v)。如果你想提高效率,可以考虑不同类型的尝试。