当前位置: 首页 > news >正文

串的模式匹配算法 ← BF算法

BF算法(Brute-Force算法)

BF算法,又称暴力匹配算法或朴素匹配算法,是一种简单直观的字符串匹配方法。其核心思想是通过逐个比较主串和模式串的字符,直到找到完全匹配的子串或遍历完整个主串。

算法原理

主串长度为 n,模式串长度为 m。从主串的第一个字符开始,依次与模式串的字符进行逐位比较。若发现不匹配的字符,则将模式串向后滑动一位,重新从模式串的第一个字符开始比较。

算法步骤

● 主串的第i个字符(初始时i=pos)和模式的第一个字符(j=0)比较,若相等,继续逐个比较后续字符(i++、j++);若不等,从主串的下一字符(i=i-j+1)起,重新与模式的第一个字符(j=0)比较。
● 直到主串的一个连续子串字符序列与模式相等 。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功
● 否则,匹配失败,返回值 -1。

示例演示


设主串 S = "ABCABDABCAB"(n=10),模式串 P = "ABCAB"(m=5)。

实际过程:
初始 i=0, j=0,S[0]=A == P[0]=A → i=1, j=1。
S[1]=B == P[1]=B → i=2, j=2。
S[2]=C == P[2]=C → i=3, j=3。
S[3]=A == P[3]=A → i=4, j=4。
S[4]=B == P[4]=B → i=5, j=5。此时 j=m=5,匹配成功,起始位置为 5-5=0?不,i 此时是 5,j=5,起始位置是 i-j=0,即 S[0:5] 为 "ABCAB",正确。

模版代码

#include <bits/stdc++.h>
using namespace std;int BF(string S,string T) {int i=0,j=0;while(i<S.length() && j<T.length()) {if(S[i]==T[j]) {i++;j++;} else {i=i-j+1;j=0;}}if(j>T.length()-1) return i-T.length()+1;else return -1;
}int main() {string s,t;getline(cin,s);getline(cin,t);cout<<BF(s,t);return 0;
}/*
input:
abefdeffabc
effa
output:
6
*/
http://www.dtcms.com/a/559032.html

相关文章:

  • 网站后台账号密码获取网站购物车建设
  • 网站怎么看被百度收录给网站添加代码
  • 旅游企业公司网站建设网页制作基础知识答案
  • 电子商务网站建设的意义是什么意思住房和城乡建设部贰级建造师网站
  • 海南建设工程股份有限公司网站企业网站管理系统添加教程
  • 做语文课文网站的好处网站正在建设中 页面
  • 深圳网页服务开发与网站建设做质粒图谱的网站
  • 工长网站开发注册一个网站要多少钱
  • 住房和城乡建设部网站查询手机免费网站制作
  • 盐城建设公司网站网站运营维护的基本工作
  • 第9讲:列表与网格:展示动态数据
  • Python 3 文件操作指南
  • 网址站网站建设入门教程视频教程
  • 北京网站推广公司排名网站的后期维护自己怎么做
  • 注册top域名做公司网站大连网站搜索优
  • java学习--for循环、if判断、switch、while、do-while
  • 网页型网站thinkphp网站开发服务器
  • 门户网站seo做网站的公司有前途吗
  • 辽 icp 大连 网站建设淘宝怎么才能发布网站建设
  • [VT-Refine] 仿真平台 | Isaac Gym引擎 | easysim-envs配置
  • 外贸网站网站推广学院网站建设意义
  • linux sed:功能强大的流式文本处理器
  • 行业类网站应如何建设企业简介ppt范文大全免费
  • 全站仪为什么要建站shopify建站流程
  • 玉树wap网站建设微信公众号编辑教程
  • logo制作在线seo自动点击排名
  • 合肥高端网站建设公司wordpress网站好优化吗
  • 制作网站的工具wordpress附件类型
  • 建设工程企业资质工作网站网站正在建设中英文表述
  • 浅谈博星卓越网站建设qfd 网站开发