4.2.2字符串KMP算法

news/2024/12/5 12:01:42/

 

 对朴素模式匹配算法的优化:

 

 

 当我们匹配最后一个字符才发现匹配失败。

那么前面这些字符一定是与模式串对应的。

 通过模式串的部分匹配

 

朴素模式匹配算法优化思路:

 不匹配的字符之前,一定是和模式串一致的。

 可以跳过中间好几个没有必要的对比

前面5个已知字符中我们已知ab当i=4和i=5时。

 我们得到的结论并不依赖于主串,只与模式串有关。

 前面这几个字符肯定是与模式串匹配的。

 

 

 

 当第五个元素匹配失败后,主串指针i保持不变,模式串指针j=2

那如果第4个元素匹配失败呢?
主串指针i保持不变,模式串指针j=2

 可令主串指针i不变,模式串指针j=1

 

 

 

 IN CONCLUSION

 

 现在呢,我们知道当第六个元素匹配失败,可令主串指针i不变,模式串指针j=3。

那我们接下来改一下例子哈

 我们发现第5个元素匹配失败,那接下来令主串指针i不变,模式串指针j=2。

 我们发现第2个元素发生失配,令主串指针i不变,模式串指针j=1.

 第一个元素匹配失败,匹配下一个相邻字串,令j=0,i++,j++

 中间省略,与上述相同。if

 

 

此时j超过了模式串的匹配范围而停止。

 

 这个算法指对模式串T="abaabc"生效

第i个元素匹配失效,next[i]

模式串指针的数值由next数组存储。

 这就是KMP算法

特殊情况下,if(j==0){i++;j++}

process:

(1)根据模式串T,求出next数组。

(2)利用next数组进行匹配(主串指针不回溯)

 传入主串S,模式串T,以及与模式串相关的next数组。

我们来进行一个对比

改变的只是我们圈起来的部分。

 

 


http://www.ppmy.cn/news/50759.html

相关文章

玄武科技面试题

一、 数据结构 给你1~100个数,你会用什么方法去找出一个数字?(树,二分,希尔,暴力,冒泡)树的作用是什么?为业务上的树形结构建模,多级菜单&#x…

Tailwind CSS入门(二)——基本介绍和特性

上一篇文章简要的介绍了原子类CSS,以及个人对语义化、原子化的一些经验和理解。从这篇文章开始,正式开始分享Tailwind CSS的特性、使用和技巧。 Tailwind CSS是一个为快速开发而精心设计的原子类CSS框架,在此我们将搭建一个Vite项目来配合讲…

一些离谱的化学方程式

一些离谱的化学方程式 最近了解了一些比较离谱的化学方程式。特别是最后两个,绝对能够燃起你对化学的激情。希望能够对大家的学习有所帮助。 无奈水博 基础班 Ba2NaBanana 工业制香蕉 2Mg2NaO₂=2Mango 工业制芒果 CO+2Fe=Co…

Docker网络详解

文章目录 一、理解docker0网桥二、Docker网络模式三、Docker容器互联四、自定义网络 一、理解docker0网桥 安装docker的时候,会生成一个docker0的虚拟网桥。 每运行一个docker容器都会生成一个veth设备对,这个veth一个接口在容器里,一个接口…

【Unity-ML】Unity机器学习(一)

安装环境:Windows10 Anaconda3(64-bit),网上很多教程,例如这个anaconda下载及安装(保姆级教程) - 知乎anaconda包管理器和环境管理器,强烈建议食用 1.下载官网下载太慢可选用镜像下载 官网下载: Anaconda | Individua…

Android硬件通信之 蓝牙Mesh通信

一,简介 蓝牙4.0以下称为传统蓝牙,4.0以上是低功耗蓝牙,5.0开始主打物联网 5.0协议蓝牙最重要的技术就是Mesh组网,实现1对多,多对多的无线通信。即从点对点传输发展为网络拓扑结构,主要领域如灯光控制等&…

linux命令---- ls

这里写目录标题 一 ls的具体指令分类1 ls -a 查看所有文件2 ls -h 人性化的显示 二 ls相关练习1 查看 /usr内容2 查看所有 /usr内容(既包含隐藏,也包含非隐藏)3 查看 /usr详细内容4 简化 查看 /usr详细内容5 易懂简化版 查看 /usr详细内容 6 以树结构显示 一 ls的具体指令分类 …

Linux:network: tcp: EADDRINUSE;SO_REUSEADDR;SO_REUSEPORT;SO_BINDTODEVICE

文章目录 参考问题tcp选项bindsocket-bound dev index的设置参考 https://unix.stackexchange.com/questions/54975/how-to-check-that-a-daemon-is-listening-on-what-interface On linux, which uses a weak host model, every application listens on every interfaces by …