目录
创作不易,可以点点赞,如果能关注一下博主就更好了~
一、前言
子串的定位运算通常称为串的模式匹配或串匹配。此运算的应用非常广泛,比如在搜索引擎、拼写检查、语言翻译、数据压缩等应用中,都需要进行串匹配。
串的模式匹配设有两个字符串 S 和 T,设 S 为主串,也称正文串;设 T 为子串,也称为模式。在主串 S 中查找与模式 T 相匹配的子串,如果匹配成功,确定相匹配的子串中的第一个字符在主串 S 中出现的位置。
著名的模式匹配算法有 BF 算法和 KMP 算法。
二、BF 算法
BF 算法,即暴力(Brute Force)算法,是最简单直观的模式匹配算法。
int IndexBF(const char* S, const char* T)
{
if (S == NULL || T == NULL) // 判断是否为空指针
return -1;
int i = 0; // 主串指针
int j = 0; // 模式串指针
int slen = strlen(S);
int tlen = strlen(T);
while (i < slen && j < tlen)
{
if (S[i] == T[j])
{
++i;
++j;
}
else
{
// 回溯
i = i - j + 1;