算法笔记-串匹配问题(BF)

BF算法-朴素的模式匹配算法

伪代码形式:
输入:主串S,模式T
输出:T在S中的位置(以起始位置记)

初始化index=0,用于记录某一趟比较S串起始的下标
利用i,j分别标记比较中的S,T串的下标
初始化i=j=0
重复如下操作,直到S或T串中某一串比较完毕
若S[i]=T[j],配对成功,则继续比较下一对字符S[i+1],T[j+1]
否则,说明该轮次匹配失败,进行下一轮次的比较,回溯i至下一轮次比较起始位置,index++,i=index,j=0
若S串匹配完,则返回匹配失败信息,否则说明匹配成功,返回T在S中的位置index

C++代码

int BF(char S[],char T[])
{
	int index=0;
	int i=0,j=0;
	while((S[i]!='\0')&&(T[j]!='\0'))
	{
		if(S[i]==T[j]) {i++;j++;}
		else {i=++index;j=0;}
	}
	if(S[j]=='\0') return 0;
	//T在S中的位置即为index+1,因为数组下标是从0开始,故需+1输出
	else return index+1;
}
posted @ 2021-03-17 20:38  bluezer  阅读(90)  评论(0编辑  收藏  举报