串的BF匹配算法

来源:互联网 发布:基于社交网络推荐算法 编辑:程序博客网 时间:2024/06/08 07:05

串的SF匹配算法,算法核心思想是:首先S[1]和T[1]比较,若相等,则再比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一个字符的位置,再依次进行比较。如果存在k,1≤k≤N,且S[k+1…k+M]=T[1…M],则匹配成功;否则失败。该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。

// 串的匹配算法.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"void BFMacth(char *comment,char *str) //BF字符串匹配算法,用变量记录此时主串指针替代指针不用回溯{int i=0,j=0;int sum=0;while(i<strlen(comment)){int a=i;   j=0;//模式串指针回溯while(comment[a]==str[j]&&j<strlen(str)){a++;j++;}if(j==strlen(str))cout<<a-2<<endl;i++;}}void BFMacth2(char *comment,char *str)  //BF字符串匹配算法,主串指针回溯{int i=0,j=0;while(i<strlen(comment)){j=0;//模式串指针回溯while(comment[i]==str[j]&&j<strlen(str)){i++;j++;}if(j==strlen(str))cout<<i-2<<endl;i=i+1-j;   //主串指针回溯}}int _tmain(int argc, _TCHAR* argv[]){char *comment="00010101001000000001010";char *str="10";BFMacth2(comment,str);return 0;}


 

原创粉丝点击