KMP 算法

主串P: a b a c b c a b a b a b b c b c

模式串S:a b a c b c a

第一步:计算模式串S的前缀码

规则: 前后缀码必须一致且是最长,不能超过模式串本身。

第二步:列好表格进行匹配,如下:

比较开始:

从模式串S[0] 和主串P[0],开始匹配,相同。则 i++,j++;直到不匹配。

第一遍匹配到:S[3] 不等于 P[3]

此时找到模式串S[3]对应的next 值为 1,主串匹配位不变,模式串移动到 S[1](即字符串b

此时还是不等,接着上一步的操作,即 S[0] 和 P[3] 进行比较

这里需要注意的地方是:此时 S[0] 和 P[3] 不等。而对应模式串S位置上的next值为 -1。

到了这一步说明在主串P从开始匹配位置(即0)到结束匹配位置(即3)没有匹配到与模式串一致。

换句话说:当匹配到next值为-1时,就结束匹配。

这时,主串 j++ (即 j = 4)与 模式串的开头比较(即S[0])

此时,S[4] 不等于 S[0],由于 S[0] 的 next 值(即 -1),故 j++,S[5] 与 P[0] 比较

还是不等,继续重复上一步操作 S[6] 与 P[0] 比较,此时:S[6] 等于 P[0]

i++, j++ 继续比较,比较到 S[12] 等于 P[6],此时:主串S 从 [6] 到 [12] 都等于 模式串[0] 到 [6],并且当前模式串匹配位到达上限,因此匹配成功

如果最终结果匹配到主串的上限,并且模式串没有到达上限时,说明主串不存在模式串。

软考笔记(数据结构篇)———— KMP算法相关推荐

  1. 软考中级【数据库系统工程师】第1章:计算机系统知识,自学软考笔记,备考2022年5月份软考,计算机硬件系统CPU组成指令寄存器组总线输入输出的程序控制方式计算机体系结构与存储系统加密技术流水线技术

    前情提要:笔记只整理与考试相关的重点知识,也就是历年真题出现过的考点我都会记录笔记,一些不重要的内容我就不记录了,大家可以自行查看教材. 1.1计算机硬件基础知识 考点1:计算机硬件系统的组成 考点2 ...

  2. 软考笔记(八)高级系统架构师/分析师:系统架构

    目录 软考官网 报名通道 软考架构师笔记(一):计算机系统基础 软考架构师笔记(二):计算机网络基础与信息安全 软考架构师笔记(三):操作系统基础 软考架构师笔记(四):企业信息化与系统规划 软考架构 ...

  3. 软考笔记(一)高级系统架构师/分析师:计算机系统基础

    目录 软考官网 报名通道 软考架构师笔记(一):计算机系统基础 软考架构师笔记(二):计算机网络基础与信息安全 软考架构师笔记(三):操作系统基础 软考架构师笔记(四):企业信息化与系统规划 软考架构 ...

  4. 软考笔记(二)高级系统架构师/分析师:计算机网络基础与信息安全

    目录 软考官网 报名通道 软考架构师笔记(一):计算机系统基础 软考架构师笔记(二):计算机网络基础与信息安全 软考架构师笔记(三):操作系统基础 软考架构师笔记(四):企业信息化与系统规划 软考架构 ...

  5. 初级程序员软考重点6 数据结构与算法

    初级程序员软考重点6:数据结构与算法 一.数据结构和算法 1. 逻辑结构 (1)线性结构 (2)非线性结构 2. 存储结构 3. 顺序表 4. 链表 二.数组和字符串 三.矩阵 1. 特殊矩阵 2. ...

  6. 软考笔记(五)高级系统架构师/分析师:系统需求工程 需求分析

    目录 软考官网 报名通道 软考架构师笔记(一):计算机系统基础 软考架构师笔记(二):计算机网络基础与信息安全 软考架构师笔记(三):操作系统基础 软考架构师笔记(四):企业信息化与系统规划 软考架构 ...

  7. 软考笔记——第七章--数据结构

    第七章 数据结构 数据结构:线性结构.数组.矩阵和广义表.树和二叉树.图 1.线性结构 线性结构:每个元素最多只有一个出度和入度,表现为一条线状.线性表按存储方式分为顺序表和链表. 存储结构: 顺序存 ...

  8. 软考笔记——1.1、计算机硬件组成、数据的进制转换、校验码

    一.计算机硬件组成 计算机的硬件基本系统由五部分组成:运算器.控制器.存储器.输入设备(如鼠标键盘).输出设备(如显示器) 存储器分为内部存储器(即内存.容量小,速度快,临时存放数据)和外部存储器(即 ...

  9. (软考笔记) —— 系统架构设计师 - UML建模与架构文档化

    文章目录 UML建模与架构文档化 UML 现状与发展 UML起源 UML 体系结构演变 UML 的应用与未来 UML基础 概述 用例和用例图 交互图 类图和对象图 状态和活动图 状态图 活动图 构件图 ...

  10. 软考笔记第九天之多媒体基础

    内容: 多媒体技术基础概念 多媒体相关计算问题 常见多媒体标准 数据压缩技术 声音的带宽: 人耳:20Hz-20kHz 说话:300-3400Hz 乐器:20Hz-20kHz 采样:采样频率,采样精度 ...

最新文章

  1. RecyclerView横向滑动与ViewPager冲突问题
  2. Spring核心AOP(面向切面编程)
  3. 搜狗信息流推荐算法实践
  4. Excel表格数据导入到SQLServer数据库
  5. 华三云:不做开源的投机者
  6. 中软python编码规范考试试题_卓越分享 | 如何写出一手漂亮的Python代码?
  7. 【一本通1347】格子游戏
  8. css3价格斜切_HTML5+CSS3价格表翻转切换动画
  9. php大文件读,PHP读取大文件
  10. (day 46 - 小根堆 || 动态规划 ) 剑指 Offer 49. 丑数
  11. 快速了解Linux curl命令
  12. 2022年深圳市集成电路专项资助计划项目申报条件及材料,补贴3000万
  13. 2022-2028年全球及中国点胶枪行业发展现状调研及投资前景分析
  14. SDS启动失败,提示连接primary节点失败
  15. 2017中国云平台发展现状与趋势研究报告
  16. 数据库一条insert插入多条记录
  17. 读淘宝页面字节流提取宝贝图片地址宝贝标题宝贝价格
  18. 【distillation】shrinkTeaNet:Million-scale Lightweight Face Recognition via Shrinking T-S Networks
  19. vsport 虚拟串口 控件 Virtual Serial Port ActiveX注册码
  20. 计算机组成原理 微地址设置MLD,计算机组成原理实验

热门文章

  1. Linux 2.6 中的页面回收与反向映射
  2. Java 中的枚举 (enum)
  3. Anaconda中安装pygame
  4. ubuntu服务器文件权限设置密码,Ubuntu 开启 root 用户并开启 ssh 远程访问权限
  5. 刚体转动惯量的测定实验数据软件_物理吸附实验数据分析 第11部分 在Origin软件中由物理吸附等温线确定材料的t图比表面积的方法...
  6. c语言python字典结构_在python中创建类似C语言中struct的结构来保存数据
  7. 帮助文档或使用说明Chm文档打开后,目录都在,内容为空白,如何解决?
  8. Qt编写自定义控件属性设计器
  9. CPU 100% 异常排查实践与总结
  10. SQL查询效率-100w数据查询只要1秒