【串的模式匹配算法】
串的模式匹配算法:设有两个字符串S和T,设S为主串,也称正文串;设T为子串,也称为模式。在主串S中查找与模式T相匹配的子串,如果匹配成功,确定相匹配的子串中的第一个字符在主串S中出现的位置。 著名的模式匹配算法有BF算法和KMP算法。

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

【BF算法代码】

#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
effaoutput:
6
*/

串的模式匹配算法 ← BF算法相关推荐

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

    目录 1.BF算法 1.1匹配过程: 1.2直接使用string方法编写BF算法: 1.3编写SString来编写BF算法 子串的定位运算通常称为串的模式匹配或是串匹配.著名的算法有BF算法和KMP算 ...

  2. 【考研】串的模式匹配算法——KMP算法(含真题)

    前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结,以便复习. 可搭配以下链接一起学习: [考研]<数据结构>知识点总结.pdf_考研 ...

  3. 串的模式匹配(BF算法)

    [问题描述] 串的模式匹配算法BF的实现与应用. [输入形式] 第一行输入主串s: 第二行输入模式串t: 输入串中均不包含空格字符. [输出形式] 模式串在主串s中的出现的每一个位置序号.若一次都未匹 ...

  4. [数据结构]模式匹配算法--KMP算法详解

    目录 一. 模式匹配 二. 模式匹配算法 1. 朴素模式匹配算法 2. KMP算法 1). KMP算法的优势 2). KMP算法的原理 3). next数组的构造 4). 利用next数组匹配的过程 ...

  5. 4.3串的模式匹配算法(BF算法)

    4.3.1 求子串位置的定位函数Index(S,T,pos) 子串的定位操作通常称做串的模式匹配(其中T称为模式串),采用定长顺序存储结构,可以写出不依赖于其他串操作的匹配算法. 算法4.5: 下面是 ...

  6. 《数据结构》实验报告四:串的模式匹配(BF算法、KMP算法)

    一.实验目的 1.了解串的基本概念. 2.掌握串的模式匹配算法的实现 . 二.实验预习 说明以下概念 1.模式匹配: 串的模式匹配就是子串的定位运算. 设有两个字符串 S 和 T ,S为主串(正文串) ...

  7. 第四章:2.串 -- 串的模式匹配算法(KMP)

    前言: 目录: 1.串类型的定义 2.串的表示和实现 3.串的模式匹配算法 4.串操作应用举例 正文: 串的模式匹配即,在给定主串S 中,搜索子串T 的位置,如果存在T 则返回其所在位置,否则返回 0 ...

  8. 数据结构笔记(十四)-- 串的模式匹配算法

    串的模式匹配算法 一.普通模式匹配算法 1.算法解析 普通模式匹配算法,其实现过程没有任何技巧,就是简单粗暴地拿一个串同另一个串中的字符一一比对,得到最终结果. 例如,使用普通模式匹配算法判断串 T( ...

  9. 数据结构(C语言版)严蔚敏(字符串的模式匹配算法--KMP算法)

    数据结构(C语言版)严蔚敏(字符串的模式匹配算法–KMP算法) 1.暴力匹配算法 // 暴力匹配算法 int Index2(SString S,SString T) {// S是主串,T是子串int ...

  10. 数据结构:KMP算法 串的模式匹配算法(全网最详细)

    目录 KMP模式匹配算法 简述 KMP模式匹配算法原理 如果人眼来优化的话,怎样处理         接下来我们自己来发现j的移动规律: 这一段公式证明了我们为什么可以直接将j移动到k而无须再比较前面 ...

最新文章

  1. 看了看カルタグラ~魂ノ苦悩~(カルタグラ~ツキ狂イノ病~PS2移植版)的官网...
  2. Go 语言编程 — Profiling 性能分析
  3. c++ stl之pirority_queue
  4. python virtualenv 如何更改mkvirtualenv默认新建虚拟环境的路径?WORKON_HOME
  5. JavaScript实现countSetBits设置位的数量算法(附完整源码)
  6. python 爬虫性能_Python 爬虫性能相关总结
  7. arcgis重心迁移分析_锂电池行业分析:从工艺、成本及供需角度看三元材料高镍化趋势...
  8. 20190920 On Java8 第二十章 泛型
  9. 实验室服务器系统设计,实验室教学管理系统设计与实现
  10. 2018_11_05_珍惜少年时
  11. 凭借左程云(左神)的这份 “程序员代码面试指南”我入职了字节
  12. oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
  13. h5自定义微信分享链接
  14. LINUX修改主机名称(立即永久生效)
  15. Decorate 模式
  16. Linux之ARM(IMX6U)裸机汇编LED驱动实验--烧写bin文件到SD卡中并运行
  17. 海南楼市充斥着传说 投机者必将自食其果
  18. GIS功能区类型识别
  19. 案例1—MP3在线搜索下载程序
  20. VC助手 Visual Assist 6.0的安装与简介

热门文章

  1. NLS_LANG详解
  2. 天猫小黑盒从发布新品到影响供应链
  3. 利用xpath数据解析爬取百度新闻热榜
  4. mybatis替换大于号或者小于号
  5. Pytorch教程[03]transforms
  6. js实现——鼠标单击事件-onclick和双击事件-ondblclick
  7. HttpClient请求https类型的网站接口碰到ssl证书不受信任问题处理
  8. AfterEffects CS6安装插件教程
  9. 【web前端期末大作业】简单的学生网页作业源码 基于html css javascript jquery技术设计的音乐网站(44页)
  10. 有道换域名,目标中立、客观、包容