字符串匹配算法设计



给定文本t[1…n]和k模式p1,p2,。。。pk,每个长度为m,n=2m,来自字母表[0],Sigma-1]。设计一个有效的算法来找到t中任何模式pj匹配的所有位置i。

所以我有一个字符串t="12 3 4 5 2 2 9"和模式p="4 5 2"。我知道会有m+1个位置,我可以找到一个模式(从"1 2 3 4","2 3 4 5"等)。

然后我们在模式中有k个字符,所以bigO是O(k(m+1))。

我的算法是在字符串中搜索,用模式中的字符检查每个字符。这将为m+1个位置运行k次迭代。

希望我的解释是正确的。我只是想知道我做得是否正确,我的逻辑是否有任何缺陷。非常感谢。

我的算法是通过字符串进行搜索,检查每个模式中字符的字符。那会让我筋疲力尽m+1个位置的迭代。

这意味着对于每个模式,你都可以做O(m+1),对吧?

尽管有一些算法可以达到这种性能,但你的暴力算法却不能。您有m+1个位置,每个位置需要检查m个字符,因此每个模式的总复杂性为O(m(m+1))。

最新更新