目录

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相应位置上的字符相同,则 ij 要进行自增,即都往后移一位,直到失配( ij 相对应的字符不相同),此时,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算法

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

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

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

  2. 字符串匹配算法(BF算法KMP算法)

    字符串匹配算法 暴力匹配(BF)算法 KMP算法 next数组 求next数组的练习 next数组的优化(nextval数组) 练习 暴力匹配(BF)算法 BF算法,即暴力(Brute Force)算 ...

  3. 《数据结构》—— 串的模式匹配算法

    串的模式匹配 一.简单的模式匹配算法(BF算法) 二.KMP算法 一.简单的模式匹配算法(BF算法) 在实际应用中我们常常能用到类似串的模式匹配,也称子串的定位操作.例如单词查找,百度搜索都是串的模式 ...

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

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

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

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

  6. 串的模式匹配算法(超详细)

    串的模式匹配 1 简单的模式匹配算法 2 KMP算法 3 KMP算法改进 4 时间复杂度比较 1 简单的模式匹配算法 思想: 将主串中所有长度为m的子串依次与模式串对比,直到找到一个完全匹配的子串或所 ...

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

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

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

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

  9. 字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)

    [算法流程] 朴素的字符串匹配算法即暴力匹配算法(BF,Brute Force),其本质是暴力枚举,主要特点有: 没有预处理阶段: 滑动窗口总是后移 1 位: 对模式中的字符的比较顺序不限定,可以从前 ...

最新文章

  1. TP5 使用IN查询时如何限制条数
  2. leetcode -eleven:Container With Most Water
  3. vs2015通过ODBC连接SQLSERVER2012
  4. 超级电容怎么才能把内阻做小_骆驼电瓶怎么样?
  5. .NET MVC运行周期
  6. calender get方法_Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
  7. 关于Polar SI9000重装/启动后卡在Frequency Dependent Calculation界面不能切换。
  8. java qlv转mp4 代码_怎么将qlv格式转换成mp4?教你快速转换视频格式的技巧
  9. 空气质量预报模式系统(CMAQ)
  10. 散点数据的包络线获取(MATLAB)
  11. idea2019 换背景
  12. win10安装红警运行出现FATALString Manager failed to initilaized properly
  13. 2020厦门国际银行数创金融杯建模大赛(一)----赛题说明数据重塑Baseline
  14. jdk eclipes 配置 MySql navicat8_mysql_en安装
  15. python用来占位的关键字_python-study/Readme.md at master · wchhuangya/python-study · GitHub
  16. 计算机组成原理(5)CPU功能 控制器/运算器/寄存器/操作控制器、时序发生器 指令周期 方框图 微程序 流水CPU 三种相关性
  17. [和管子对话] 1 2007-4-5/对面向对象的你言我语 (转载)
  18. Linux安装pyhive
  19. CMMI的五个级别及其特征简述
  20. 【渝粤教育】电大中专财经法规与会计职业道德 (2)_1作业 题库

热门文章

  1. AD转换 XPT2046
  2. 在linux下怎么解除git本地仓库_如何在Linux上搭建一个Git中央仓库
  3. 腾讯王宏岩:互联网的发展与企业微信
  4. Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建实例
  5. Vue elementui中侧边栏滚动条隐藏
  6. mysql增量抽取方法_DataX增量抽取数据
  7. 关于举办“2020(第八届)先进制造业大会”的通知
  8. 详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown)
  9. 南陵萃英园2021年高考成绩查询,南陵萃英园中学举行2020届高考50天冲刺誓师大会...
  10. 在c语言中,什么函数能测量当前变量所占字节数,2017年9月计算机二级考试C语言预习自测题(4)...