C++中的模式匹配介绍

1.C++ string类中提供的一些字符串操作
2.在一个字符串中定位查找另一个字符串的操作 s.find(aStr,pos) (string::npos表示未查找到)

3.举例:Unix的grep命令搜索一个文件,查找基因生物信息的算法

4.暴力法:这个算法低效的原因是当失配发生时所要求的回溯.
5.Knuth-Morris-Pratt 算法:解决回溯现象
6.Boyer-Moree方法

说白了就是简单匹配算法和KMP匹配算法
简单匹配此算法的思想是直截了当的:
将主串S中某个位置i起始的子串和模式串T相比较。即从 j=0 起比较 S[i+j] 与 T[j],若相等,则在主串 S 中存在以 i 为起始位置匹配成功的可能性,继续往后比较( j逐步增1 ),直至与T串中最后一个字符相等为止,否则改从S串的下一个字符起重新开始进行下一轮的"匹配",即将串T向后滑动一位,即 i 增1,而 j 退回至0,重新开始新一轮的匹配。

而如果使用KMP匹配算法,当第一次搜索到S[5] 和T[5]不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中T[5]==’d’的模式函数值(next[5]=2,为什么?后面讲),直接比较S[5] 和T[2]是否相等,因为相等,S和T的下标同时增加;因为又相等,S和T的下标又同时增加。。。最终在S中找到了T。

KMP算法的核心思想是利用已经得到的部分匹配信息来进行后面的匹配过程。

本文由 PC蛋蛋预测网 (www.pcdd286.com)编辑发表.未经同意,不允许转载!

转载于:https://www.cnblogs.com/cc001/p/6524243.html

你一点要认真了解 C++中的模式匹配介绍相关推荐

  1. matlab二维图形中确定一点的坐标系,在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?...

    在CAD中已知一个平面图中两个点的坐标如何建立坐标系以便求出图形中任一点的坐标?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一 ...

  2. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

  3. 6.支持向量机(SVM)、什么是SVM、支持向量机基本原理与思想、基本原理、课程中关于SVM介绍

    6.支持向量机(SVM) 6.1.什么是SVM 6.2.支持向量机基本原理与思想 6.2.1.支持向量机 6.2.2.基本原理 6.3.课程中关于SVM介绍 6.支持向量机(SVM) 6.1.什么是S ...

  4. php引用代码_PHP引用是什么?php中引用的介绍(代码实例)

    本篇文章给大家带来的内容是关于PHP引用是什么?php中引用的介绍(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 什么是引用 在 PHP 中引用是指用不同的名字访问 ...

  5. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  6. CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  7. HTML中Css详细介绍

    HTML中Css详细介绍 一.样式表的作用 1.Css样式表,层叠样式表 2.类似于人类的衣服,网页的衣服 3.作用:美化网页 4.优势: 1.内容与表现分离,便于维护 2.样式丰富,页面布局灵活 3 ...

  8. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍

    1 解决ls查看文件爱呢颜色为白色 方法一: 1.修改~/.bashrc文件,添加如下内容 alias ls='ls --color=auto' 2.source一下,让修改配置生效 source ~ ...

  9. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  10. Linux中 /boot 目录介绍 【转载】

    Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...

最新文章

  1. linux mud 游戏,快刀幻想mud文字传奇-快刀幻想mud神器兑换码-快刀幻想mud下载v1.80-Linux公社...
  2. 搜索引擎广告过滤Chrome插件
  3. windows 远程桌面 启动方式
  4. 透彻,在SpringBoot项目中使用Netty实现远程调用
  5. 一分钟了解ArrayList和Vector的区别
  6. GridView Bind 短日期 格式
  7. 非规范SQL的sharding-jdbc实践
  8. 使用JQuery Mobile实现手机新闻浏览器
  9. 抓包工具mitmproxy | mitmweb基本用法(二)
  10. 论文解读丨无参数的注意力模块SimAm
  11. Java 算法 幂方分解
  12. java.sql.SQLException
  13. Hypermesh软件初学
  14. siamfc代码解读_SiamFC用于目标跟踪的全卷积孪生网络 fully-convolutional siame
  15. java长连接_java如何实现http长连接
  16. 华为手机流量日显示无服务器,华为手机开启了数据流量却不能上网怎么办
  17. Hack the box: Bastion
  18. vue-lazyload图片懒加载的简单使用
  19. 怎样使PPT自动播放
  20. outlook邮箱收件服务器密码,微软邮箱(hotmail+outlook):应用密码获取+STARTTLS加密...

热门文章

  1. Feed系统架构资料收集
  2. 妙用TurboMail企业通讯平台,重要邮件不再躲猫猫
  3. 找出随Windows自启动程序的『十大藏身之处』
  4. 第三方物流(Third Party Logistics,3PL)
  5. Resteasy配置及其使用
  6. 通过SecureCRT工具从远程Linux服务器下载文件到本地Windows
  7. 雷布斯被骗200w??一行代码值两百万?雷军公开小米新logo翻车了?
  8. 为什么我推荐你立刻使用Java 8 Stream?性能逆天了
  9. 支付宝系统架构参考(架构图,最新揭秘)
  10. mnist数据集_探索Tensorflow2中神经网络算法——基于Mnist数据集(一)