2008-12-08 78 views
4

我有SQL调用,我想用它来检测环路(因此不必要的重复的SQL调用)的序列,但它让我思考这个更一般的问题。如何检测字符串列表中的重复?

给出一个列表,说 [a,b,c,b,c,a,b,c,b,c,a,b,b]

有没有一些方法,我可以把它转换成 a,[[b,c]*2,a]*2,b*2

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

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

+0

这个问题的答案在这里:http://stackoverflow.com/questions/6874250/lossless-hierarchical-run-length-encoding – 2016-01-06 07:19:18

回答

0

如果你可以先进行排序,然后很容易经历更多的时间来寻找重复操作。当然,像SQL查询这样的自由格式排序听起来有点可怕。

0

我在这一领域的专家,但你可能想看看一些压缩算法,在我看来,这是相当正是他们做什么。

0

如果字符串足够大,一个有趣的方法是在其上运行压缩工具(如gzip,bzip或7zip)。这些工具通过定位重复(各级),并通过指针取代他们的文字(或字典)的初审工作。你实现的压缩是重复的度量。转储文件(你将不得不编写代码来做到这一点)会给你重复的内容。

+0

怀疑这将工作,因为压缩程序将愉快地使用子字符串,并将忽略SQL命令的界限。 – derobert 2008-12-08 15:45:01

相关问题