1. 引言
字符串匹配是极为常见的一种模式匹配。简单地说,就是判断主串\(T\)中是否出现该模式串\(P\),即\(P\)为\(T\)的子串。特别地,定义主串为\(T[0 \dots n-1]\),模式串为\(P[0 \dots p-1]\),则主串与模式串的长度各为\(n\)与\(p\)。
暴力匹配
暴力匹配方法的思想非常朴素:
- 依次从主串的首字符开始,与模式串逐一进行匹配;
- 遇到失配时,则移到主串的第二个字符,将其与模式串首字符比较,逐一进行匹配;
- 重复上述步骤,直至能匹配上,或剩下主串的长度不足以进行匹配。
下图给出了暴力匹配的例子,主串T="ababcabcacbab"
,模式串P="abcac"
,第一次匹配:
第二次匹配:
第三次匹配:
C代码实现: