常用字符串搜索算法介绍
字符串搜索或匹配是经常用到的技术,因此也发展了多个算法,介绍几个著名的算法。
1.单模式匹配
就是在一些文本中查找某一个子字符串的算法,效率较高的有以下几种。
KMP算法:全称Knuth-Morris-Pratt算法 预处理时间Θ(m) 匹配搜索时间 Θ(n)
BM算法:全称Boyer-Moore string search algorithm 预处理时间Θ(m + |Σ|) 匹配搜索时间Ω(n/m), O(n)
2. 有限模式集合匹配
就是在字符串中查找多个子字符串的算法,常用于查找字典中的单词和一些脏字匹配算法
Aho-Corasick算法:这是一种字典匹配算法,它用于在输入文本中查找字典中的字符串。时间复杂度是线性的。
基本原理:该算法利用类似后缀树的方法构造一个trie结构,匹配时利用该结构来搜索。
Commentz-Walter 算法:详细未知
Rabin-Karp string search算法:该算法最差复杂度不好,因此运用的并不广泛。
以上资料来源于维基百科,感兴趣的可以搜索维基百科词条String searching algorithm以获取更多信息。