在《串是什么》一节中,给大家讲解了“子串和主串”的概念。假设字符串 A 为 "shujujiegou",字符串 B 为 "shuju",在串 A 中可以找到串 B,因此串 A 和串 B 就具有这样的关系:A 是 B 的主串,B 是 A 的子串。
所谓串的模式匹配算法,是一种专门定位子串在主串中位置的方法(方案、思想),整个定位的过程称为模式匹配。此外,在模式匹配的过程中,子串通常又被称为“模式串”。
串模式匹配的实现方法有很多种,本节先给大家讲一种最容易理解、最简单的方法,称为 BF 算法。
BF算法的实现过程
采用 BF 算法定位模式串在主串中的位置,就是简单粗暴的从主串的起始位置开始,不断地将模式串中的字符和主串中的字符进行对比。
具体来讲,假设对模式串 A("abcac")和主串 B("ababcabacabab")进行模式匹配,BF 算法的执行过程如下:
1) 将模式串 A 与主串 B 的首字符对齐,逐个判断相对的字符是否相等,如图 1 所示:
图