C++数据结构之字符串的BF算法

来源:互联网 发布:涤纶 锦纶 外套 知乎 编辑:程序博客网 时间:2024/05/21 22:38

       字符串有子串和主串之分,子串只是主串中的一部分,为了计算出子串位于主串中那个位置之后,所以引入了BF算法,也就是 Brute force算法,其计算效率比较低,下面是两种BF算法代码:

第一种是利用for循环

void BF1(char *s1,char*s2,int position)//返回目标串在原串那个位置之后{int len1=strlen(s1);int len2=strlen(s2);int i=0,j=0;for(;j<len1;j++){for(;i<len2;){if(*(s2+i)!=*(s1+j))i++;else{i++;if(j==len1-1)cout<<i-len1<<' ';break;}}}}
第二种是利用while循环
int BF2(char *s1,char *s2){int i,j;i=0,j=0;while(unsigned(i)<strlen(s2)){while(s1[j]==s2[i]&&unsigned(j)<strlen(s1)){i++;j++;}if(j==strlen(s1))return i-j;i=i+1;}return -1;}


0 0