当前位置: 首页 > news >正文

KMP算法之我见

预备谈谈下面这些,可能有补充

KMP算法的用途;

KMP算法之前的暴力;

KMP算法预备知识与概念;

KMP算法模板:

KMP算法的习题。


 

1.KMP算法的用途:

主要用于模式匹配(字符串匹配)。给定一个长的字符串(target string)和一个短的字符串(pattern string),要求判断pattern string是否是target string的子串,若是,则返回子串的首个字符的下标,若否,则返回-1。


 

2.KMP算法之前的暴力:

解决这个问题最常想到的办法是brute force,即从target string第一个字符开始与pattern字符比较,如果相等则比较target string和pattern string的下一个字符,若不等则返回到target string中相等的字符的下一个字符。换句话说,假设我们用target和pattern分别表示两个字符串的指针,那么每一次比较不管两个string匹配到何种程度,只要不是完全匹配,那么target永远只能增加1,这个算法的复杂度为O(mn)。

m = strlen(target string)

n  = strlen(pattern string)

而这个接近n2的算法在n与m较大时显得非常效率低下。于是KMP算法粉墨登场,其实KMP算法与BF算法的区别在于KMP算法巧妙地消除了指针i的回溯问题,只需要确定下次匹配j的位置即可,是的问题复杂度由O(mn)下降到O(m+n)


 

转载于:https://www.cnblogs.com/Roni-i/p/8597794.html

相关文章:

  • Java 内省(Introspector)深入理解
  • Hibernate如何支持事务
  • PS
  • Pycharm增加新安装Python的路径
  • 题解 P2626 【斐波那契数列(升级版)】
  • IP地址的分类
  • The POM for ... is missing, no dependency information available
  • 云计算之路-阿里云上-容器服务:移除节点引发博问站点短暂故障
  • .Net小白的大学四年,内含面经
  • 刷题小知识点
  • 学习日记4、datagrid多行删除
  • 由编译器指定数组长度带来的一个问题
  • 我只想安静地写代码,领导却跟我谈大局、讲奉献(转 程序员精选)
  • js中的DOM节点操作---增删改查
  • 线程同步(3个条件)
  • echarts花样作死的坑
  • Git同步原始仓库到Fork仓库中
  • HTML5新特性总结
  • Intervention/image 图片处理扩展包的安装和使用
  • iOS | NSProxy
  • JavaScript DOM 10 - 滚动
  • Java多线程(4):使用线程池执行定时任务
  • 高程读书笔记 第六章 面向对象程序设计
  • 机器学习学习笔记一
  • 区块链将重新定义世界
  • 思考 CSS 架构
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • ()、[]、{}、(())、[[]]命令替换
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (剑指Offer)面试题34:丑数
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (万字长文)Spring的核心知识尽揽其中
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)ORM
  • (转)详解PHP处理密码的几种方式
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net framework profiles /.net framework 配置
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET开源项目介绍及资源推荐:数据持久层
  • .Net中ListT 泛型转成DataTable、DataSet
  • .NET中使用Redis (二)
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [APIO2012] 派遣 dispatching
  • [BJDCTF 2020]easy_md5
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [BZOJ1008][HNOI2008]越狱
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [CSDN首发]鱿鱼游戏的具体玩法详细介绍
  • [Flutter]打包IPA
  • [HNOI2015]实验比较