String CLRS 32.2-2-如何使用Rabin Karp一次匹配不同长度的k个图案?

String CLRS 32.2-2-如何使用Rabin Karp一次匹配不同长度的k个图案?,string,algorithm,pattern-matching,String,Algorithm,Pattern Matching,我一直在尝试解决CLRS中的以下问题: 如何扩展Rabin-Karp方法,一次在给定文本中找到k种不同的模式?首先假设所有模式都具有相同的长度,然后进行泛化以允许不同长度的字符串模式 更简单的情况可以通过使用HashSet来实现——向其中抛出k个模式的散列,然后使用一个给定的世界,如果当前散列在HashSet中,我们可以检查O(1)次 不过,我想把它推广一下。我发现的最好的方法是通过文本传递j次,其中j是不同模式长度的数量(每种长度传递一次) 能做得更好吗?我正在寻找一个线性时间解(O(n+m)

我一直在尝试解决CLRS中的以下问题:

如何扩展Rabin-Karp方法,一次在给定文本中找到k种不同的模式?首先假设所有模式都具有相同的长度,然后进行泛化以允许不同长度的字符串模式

更简单的情况可以通过使用HashSet来实现——向其中抛出k个模式的散列,然后使用一个给定的世界,如果当前散列在HashSet中,我们可以检查O(1)次

不过,我想把它推广一下。我发现的最好的方法是通过文本传递j次,其中j是不同模式长度的数量(每种长度传递一次)

能做得更好吗?我正在寻找一个线性时间解(O(n+m),其中m是所有k个模式组合的大小)


我看到了,但不同长度的图案没有答案。

我唯一能想象的是,在长度没有太大差异的情况下,取所有图案的最小长度。但这种方法不会给你带来任何最坏的保证