算法笔记-串匹配问题(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;
}
浙公网安备 33010602011771号