串的模式匹配算法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;然后 如果 i和 j相应位置上的字符相同,则 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算法
串的模式匹配算法1-BF算法相关推荐
- 4.3串的模式匹配算法(BF算法)
4.3.1 求子串位置的定位函数Index(S,T,pos) 子串的定位操作通常称做串的模式匹配(其中T称为模式串),采用定长顺序存储结构,可以写出不依赖于其他串操作的匹配算法. 算法4.5: 下面是 ...
- 字符串匹配算法(BF算法KMP算法)
字符串匹配算法 暴力匹配(BF)算法 KMP算法 next数组 求next数组的练习 next数组的优化(nextval数组) 练习 暴力匹配(BF)算法 BF算法,即暴力(Brute Force)算 ...
- 《数据结构》—— 串的模式匹配算法
串的模式匹配 一.简单的模式匹配算法(BF算法) 二.KMP算法 一.简单的模式匹配算法(BF算法) 在实际应用中我们常常能用到类似串的模式匹配,也称子串的定位操作.例如单词查找,百度搜索都是串的模式 ...
- 第四章:2.串 -- 串的模式匹配算法(KMP)
前言: 目录: 1.串类型的定义 2.串的表示和实现 3.串的模式匹配算法 4.串操作应用举例 正文: 串的模式匹配即,在给定主串S 中,搜索子串T 的位置,如果存在T 则返回其所在位置,否则返回 0 ...
- 数据结构笔记(十四)-- 串的模式匹配算法
串的模式匹配算法 一.普通模式匹配算法 1.算法解析 普通模式匹配算法,其实现过程没有任何技巧,就是简单粗暴地拿一个串同另一个串中的字符一一比对,得到最终结果. 例如,使用普通模式匹配算法判断串 T( ...
- 串的模式匹配算法(超详细)
串的模式匹配 1 简单的模式匹配算法 2 KMP算法 3 KMP算法改进 4 时间复杂度比较 1 简单的模式匹配算法 思想: 将主串中所有长度为m的子串依次与模式串对比,直到找到一个完全匹配的子串或所 ...
- 数据结构:KMP算法 串的模式匹配算法(全网最详细)
目录 KMP模式匹配算法 简述 KMP模式匹配算法原理 如果人眼来优化的话,怎样处理 接下来我们自己来发现j的移动规律: 这一段公式证明了我们为什么可以直接将j移动到k而无须再比较前面 ...
- 【考研】串的模式匹配算法——KMP算法(含真题)
前言 本文内容源于对<数据结构(C语言版)>(第2版).王道讲解学习所得心得.笔记整理和总结,以便复习. 可搭配以下链接一起学习: [考研]<数据结构>知识点总结.pdf_考研 ...
- 字符串处理 —— 单模式匹配 —— 朴素的字符串匹配算法(BF 算法)
[算法流程] 朴素的字符串匹配算法即暴力匹配算法(BF,Brute Force),其本质是暴力枚举,主要特点有: 没有预处理阶段: 滑动窗口总是后移 1 位: 对模式中的字符的比较顺序不限定,可以从前 ...
最新文章
- TP5 使用IN查询时如何限制条数
- leetcode -eleven:Container With Most Water
- vs2015通过ODBC连接SQLSERVER2012
- 超级电容怎么才能把内阻做小_骆驼电瓶怎么样?
- .NET MVC运行周期
- calender get方法_Calendar.get()方法--- WEEK_OF_YEAR 、MONTH、
- 关于Polar SI9000重装/启动后卡在Frequency Dependent Calculation界面不能切换。
- java qlv转mp4 代码_怎么将qlv格式转换成mp4?教你快速转换视频格式的技巧
- 空气质量预报模式系统(CMAQ)
- 散点数据的包络线获取(MATLAB)
- idea2019 换背景
- win10安装红警运行出现FATALString Manager failed to initilaized properly
- 2020厦门国际银行数创金融杯建模大赛(一)----赛题说明数据重塑Baseline
- jdk eclipes 配置 MySql navicat8_mysql_en安装
- python用来占位的关键字_python-study/Readme.md at master · wchhuangya/python-study · GitHub
- 计算机组成原理(5)CPU功能 控制器/运算器/寄存器/操作控制器、时序发生器 指令周期 方框图 微程序 流水CPU 三种相关性
- [和管子对话] 1 2007-4-5/对面向对象的你言我语 (转载)
- Linux安装pyhive
- CMMI的五个级别及其特征简述
- 【渝粤教育】电大中专财经法规与会计职业道德 (2)_1作业 题库
热门文章
- AD转换 XPT2046
- 在linux下怎么解除git本地仓库_如何在Linux上搭建一个Git中央仓库
- 腾讯王宏岩:互联网的发展与企业微信
- Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建实例
- Vue elementui中侧边栏滚动条隐藏
- mysql增量抽取方法_DataX增量抽取数据
- 关于举办“2020(第八届)先进制造业大会”的通知
- 详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown)
- 南陵萃英园2021年高考成绩查询,南陵萃英园中学举行2020届高考50天冲刺誓师大会...
- 在c语言中,什么函数能测量当前变量所占字节数,2017年9月计算机二级考试C语言预习自测题(4)...