模式匹配即给定一组特定的字符串集合,对于任意的一个字符串
,找出
中的字符串在
中的所有出现位置。称
为模式串集合,称
中的元素为模式串(或关键词),称
为文本。字符串中的字符都取自一个有限的符号集合
,简称字母表或字符集。又称串匹配。
模式匹配的主要算法包含:①拉宾-卡普(Rabin-Karp)算法。预处理计算出模式串的哈希值,在文本串上用一个滑动窗口维护对应子串的哈希值,每次滑动都可以用时间计算出新位置的哈希值。②KMP(Knuth-Morris-Pratt)算法。其主要思想是对模式串进行预处理,计算失配函数,使得每次失配时不用从头开始进行匹配,线性时空复杂度。