BF
1.BF算法
1.1算法思想
-
判断是否为空串
-
判断模式串T是否长于主串S
-
初始化:主串S和模式串T均从头开始,用指示器i,j分别指向S,T需要比较的字符
-
两串逐位比较:当S和T均没有被遍历完时,对应的字符就做比较。若值相等,则比较两者的下一位置(指示器后移i++,j++);若不等,则从S 本次比较位置的开始位置 的下一个位置(用指示器start指向)开始比较,T从头重新开始
-
判别:若匹配成功则记录S起始位置,不成功则返回false
1.2算法设计
bool Index_BF(SString S,SString T)
{
if (S.len == 0 || T.len == 0)
{
return false;
}
if (S.len < T.len)
{
return false;
}
int start = 0;
int i=0, j=0;
while (i < S.len && j < T.len) //从i退出循环是指没有匹配成功 从j退出循环是指匹配成功
{
if (S.ch[i] == T.ch[j])
{
i++;
j++;
}
else
{
start++;
i = start;
j = 0;
}
}
if (j >= T.len)
{
printf("在S中从start=%d位置开始匹配成功\n", start+1);
return true;
}
return false;
}
标签:BF,false,++,len,start,return,模式匹配
From: https://www.cnblogs.com/wlb429/p/16784085.html