English 中文(简体)
你如何在字符串列表中检测重复项?
原标题:
  • 时间:2008-12-08 15:12:53
  •  标签:

我有一系列的SQL调用,我想利用它们来检测循环(从而避免不必要的重复SQL调用),但这让我想到了更一般的问题。

Given a list, say [a,b,c,b,c,a,b,c,b,c,a,b,b]

Is there some way I can turn that into a,[[b,c]*2,a]*2,b*2

或者,[a,[b,c] * 2] * 2,a,b * 2

也就是说,检测重复(可能包含嵌套)。

最佳回答

Look into the Lempel-Ziv-Welsh compression algorithm. It is built on detecting repetitions in strings and utilizing them for compression. I believe you can use a Trie for it.

问题回答

我在那个领域不是专家,但你可能想查看一些压缩算法,因为这似乎就是它们的作用。

如果您可以先进行排序,那么再查找重复项就很容易了。当然,对于像SQL查询这样的自由格式的排序可能有些令人担忧。

如果字符串足够大,一个有趣的方法是在其上运行压缩工具(如gzip、bzip或7zip)。这些工具通过定位重复内容(在不同的级别上)并将其替换为指向文本第一个实例(或词典)的指针来工作。您实现的压缩是重复的度量。转储文件(您必须编写代码来执行此操作)将为您提供重复的内容。





相关问题
热门标签