字符串匹配BF算法

#include<iostream>            //
using namespace std;
int BF(char S[],char T[]);     //声明函数 
int main(){
    char S[]="abbabccbcbcbabadb";    //定义字符串S 
    char T[]="ccbcbc";                //定义字符串T
    int index=0;        //初始化主串比较位置 
    int i=0;            //在串T,S中设置比较的起始位置下标
    int j=0;            //同上 
    index =BF(S,T);     //调用函数 
    cout<<S<<endl;        //输出字符串S 
    cout<<T<<endl;        //输出字符串T
    cout<<index<<endl;    //输出模式串在主串中的起始下标 
    return 0;
    
     
 }
 int BF(char S[],char T[])
 {
     int index=0;    //初始化主串比较位置
     int i=0,j=0;    //在串T,S中设置比较的起始位置下标 
     while((S[i]!='\0')&&(T[j]!='\0'))//'\0'是 c++ 语言中的字符串结束符
     {
         if(S[i]==T[j])    //如果 S[i]==T[j],进入循环 
         {
             i++;        //主串S位置加1 
             j++;        //模式T位置加1 
         }
         else{            //否则 
             index++;    // 下一趟匹配位置的开始位置 
             i=index;    //主串比较位置回溯到下一个位置 
             j=0;        //模式串回到开始位置 
         }
    }
    if(T[j]=='\0')return index;    //模式串匹配完成返回模式串在主串中的起始下标位置 
    else return 0;                 //否则为空 
 } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值