串的模式匹配算法1-BF算法

 

目录

1.BF算法

  1.1匹配过程:           

 1.2直接使用string方法编写BF算法:

1.3编写SString来编写BF算法


子串的定位运算通常称为串的模式匹配或是串匹配。著名的算法有BF算法KMP算法

1.BF算法

  1.1匹配过程:           

         如主串 S="ababcabcacbab"        

         模式串 T="abcac"

         要有一个 stand 值记录 i 开始循环的位置,比如说一开始 stand=i=1;然后 如果 ij相应位置上的字符相同,则 i j 要进行自增,即都往后移一位,直到失配( i j 相对应的字符不相同),此时,j=1,i=stand+1;然后再此进行匹配,直到找到模式串或者 i > S.length(即找不到)就会退出。

 1.2直接使用string方法编写BF算法:

编译器:Code::Blocks 20.03 

/*
BF算法(C++)
题目:在主串S中找模式串T,找到则返回模式串T在S中第pos个字符开始第一次出现的位置,否则返回0
*/
#include<iostream>
using namespace std;

int Index_BF(string S,string T,int pos)
{
    if( pos<1 || pos>S.length() )
    {
        cout<<"pos位置不合法"<<endl;
        return 0;//pos值不合法
    }
    int i=--pos,j=0;
    while(i<S.length()&&j<T.length()){
        if(S[i]==T[j]){
            ++i;++j;
        }
        else{
            i=++pos;
            j=0;
        }
    }
    if(j>=T.length()) return pos+1;
    else {
            cout<<"匹配失败,在主串的特定位置中没有找到该模式串"<<endl;
            return 0;
    }
}
int main()
{
    int pos,p;        //从第pos个位置开始查找模式串
    string S,T;
    cin>>S>>T>>pos;
    p= Index_BF(S,T,pos);
    if(p!=0) cout<<"模式串出现的位置是:"<<p<<endl;
    return 0;
}

运行截图:

1.3编写SString来编写BF算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值