数字列表 - 如何找到重复模式?

时间:2012-02-24 06:18:24

标签: python pattern-matching

我有一个数字列表。很多噪音都有重复的模式。

示例数据:

(1,2,50,10,100,25,12,30,20,1,20,10,100,25,12,50,30,2,10,100,25,12,50,30,30,40,20,40,1,2,50,20,50,30,30,10,100,25,12,10,100,25,12)

在此示例中,所需的模式为10,100,25,12,但每次都会有所不同。

如何找到任何重复模式?

1 个答案:

答案 0 :(得分:6)

后缀树是在字符串中查找重复子字符串的最有效解决方案。

以下是Python实现的一个示例:https://hkn.eecs.berkeley.edu/~dyoo/python/suffix_trees/

如果你不想打扰这样一个涉及的解决方案,你可以简单地遍历字符串,一次一个元素,并删除每个元素,如果它不是“10”“100”“25”或“ 12" 。最终,你将进入第一个由“10”“100”“25”和“12”序列组成的元素。

如果你的问题需要任何一般模式,你很可能想要使用后缀树,否则你会看到很大的时间复杂性。