1.BF算法(蛮力匹配):

(1)从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则比较后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较。

(2)重复步骤(1),直到S或T中的所有字符比较完成。

(3)若T中的字符全部比较完成,则匹配成功,返回本次匹配的开始位置;否则匹配失败,返回0

#include <iostream>using namespace std;
//模式匹配BF算法
int Bf(char *str,char *s){int i,j,start;i=j=start=0;while(str[i]!='\0'&&s[j]!='\0'){if(str[i]==s[j]){i++;j++;}else{start++;i=start;j=0;//主串回溯到本次匹配时起始位置的下一个//子串回溯到第一个字符(下标为0)}}if(s[j]=='\0')//子串全部匹配成功return start+1;//返回本次匹配时主串的起始位置(不是下标)elsereturn 0;
}
int main()
{char str[20]={'a','b','d','a','b','c','e'};char s[10]={'a','b','c'};cout<<Bf(str,s);return 0;
}

模式匹配——BF算法相关推荐

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

    BF算法是基于主串指针回溯,重新与子串进行逐字符进行比较,主串为S什么要进行回溯呢,原因在于模式P中存在相同的字符或者说由字符(串)存在重复(模式的部分匹配性质),设想如果模式P中字符各不相同,主串就 ...

  2. 数据结构:模式匹配BF算法

    一.BF算法原理 子串的定位操作通常称为串的模式匹配(其中T称为模式串).这是串的一个重要操作,许多软件,如果有编辑菜单的话,则其中必有查找子菜单项,这就是一个模式匹配问题.. Index(S, T, ...

  3. 算法笔记:简单的字符串模式匹配-BF算法

    字符串模式匹配是匹配字符串A中是否存在子串a,一般字符串的结尾为'\0',可以以此作为字符串结束的判定标准. 其过程原理图如下所示: 给出源代码: #include<stdio.h> #i ...

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

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

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

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

  6. 详解图示+例题演练——BF算法+KMP算法基本原理

    KMP算法一直让我们又爱又恨,难以理解却又效率很高. 看了看网上的KMP教程,无论是博客还是视频,大多以文字和逻辑推导的方式呈现,纷繁复杂,晦涩难懂.这会让我们在初学时多走很多弯路. 人类接受知识最直 ...

  7. 数组与串,串的实现,KMP,BF算法

    数组是一种常用的数据结构,高级语言头提供了支持数组的基本操作,而且数组也是构成其他数据结构的重要组成. 数组是N个相同元素的构成的占用一块地址连续的内存单元的有限序列. 数组的任一个元素都可以用在数组 ...

  8. c语言实现bf算法的定位函数,数据结构c语言版严蔚敏清华大学出版社第四章串.ppt...

    数据结构c语言版严蔚敏清华大学出版社第四章串 模式匹配(定位) 设有主串S和子串T(将S称为目标串,将T称为模式串),在主串S中,从位置start开始查找,如若在主串S中找到一个与子串T相等的子串,则 ...

  9. Javascript实现BF算法

    BF算法 BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字 ...

最新文章

  1. Android APK加壳技术方案----代码实现
  2. Mac上小巧实用的GIF格式录屏软件 LICEcap
  3. 2018, 自动驾驶异常艰难的一年
  4. webstorm常用快捷键
  5. IOS开发知识(七)
  6. 基于KVM虚拟化搭建lamp
  7. System.Net.WebException: The operation has timed out at System.Net.HttpWebRequest.GetResponse()
  8. python写的购物车程序
  9. 每日一言学做人,古之学问,博大精深
  10. Struts2的配置文件struts.xml的模板
  11. modelsim10.1a安装破解说明
  12. 自动驾驶中的滞后碰撞检测(lazy-collision-checking)
  13. python四大高阶函数_Python里的高阶函数
  14. 小程序显示服务器开小差,小程序提交一直显示网络错误,网络开小差,请刷新重试,切换网络也上不去,请问是?...
  15. mysql 半同步 插件_编写半同步复制插件
  16. android drawable 对象,Android Drawable开发简介
  17. Objective-C中的@Property具体解释
  18. Python连连看小游戏源代码
  19. 怎么用linux给苹果手机降级,如何查询iOS可降级版本?苹果iOS随意降级工具或即将到来...
  20. 机器学习、深度学习、自然语言处理、计算机视觉顶级期刊的论文资料分享(附CVPR2017-2019,ECCV 2018论文下载链接)

热门文章

  1. linux 的IP修改
  2. GIS空间分析实验教程期末重点1718
  3. 在做RTSP摄像机H5无插件直播中遇到的对接海康摄像机发送OPTIONS心跳时遇到的坑...
  4. 一个产品助理的世界观
  5. VS2010操作Excel编程
  6. 第十章 进程间的通信 之 Java/Android多线程开发(二)
  7. B. Same Parity Summands
  8. 2022年计算机软件水平考试系统分析师(高级)练习题及答案
  9. linux下用lame压缩mp3
  10. C语言中gets_s(),gets(),fgets()函数的比较。