news 2026/5/2 5:54:48

KMP查询算法的匹配串的前缀后缀相同的最大长度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
KMP查询算法的匹配串的前缀后缀相同的最大长度

一、KMP算法的作用

查询复杂度是O(n+m),其中n是主字符串长度,m是匹配串的长度。

二、字符串的前缀和后缀

(一)前缀

指的是字符串从第1个字符串开始,每次截取连续字符串的操作。

例如字符串"ABC"的前缀有下列情况:

"A"、"AB"、"ABC"。

(二)后缀

指的是从第1个字符开始,每次截取连续字符串到最后1个字符的操作。

例如字符串"ABC"的后缀有下列情况:

"ABC"、"BC"、"C"。

三、匹配串的前缀和后缀相同

简单的说:就是把前缀和后缀拿来比较,有相同的就记录前缀或者后缀的长度。

案例(避免选择整个字符串为前缀和后缀):

以匹配串"ABAB" 为例:

比较1个字符:前缀"A"和后缀"B"不相同。
比较2个字符:前缀"AB"和后缀"AB"相同,记录前缀长度是2个字符。
比较3个字符:前缀"ABA"和后缀"BAB"不相同。

四、KMP比较的思路

(一)预处理,求得匹配串每个字符前面的前缀和后缀相同的最长长度。

默认值是0,也就是从匹配串的第1个字符开始比较。

(二)按顺序从第1个位置比较主串和匹配串的对应字符

1、如果对应位置的字符相同,去下一个位置比较。

2、如果比较到匹配串的末尾,代表匹配成功。

3、如果对应字符不相等,就把匹配串跳转到前缀后缀相同的长度,继续比较。

总之,前面有比较过并且相同的,就不需要从头开始比较了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 5:54:47

Hitboxer:游戏玩家的键盘魔法师,解决方向键冲突的终极方案

Hitboxer:游戏玩家的键盘魔法师,解决方向键冲突的终极方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏对决中,因为同时按下左右方向键而导致角色突然…

作者头像 李华
网站建设 2026/5/2 5:49:26

上海物联网平台与设备集成开发:D-coding 一站式解决方案深度解析

物联网应用开发在落地层面远比概念复杂。设备协议的碎片化、数据链路的稳定性、平台架构的扩展能力,每一个环节都可能成为项目推进的阻碍。上海作为国内制造业和工业互联网的重要聚集地,围绕物联网应用开发的需求持续增长,但真正能从设备接入…

作者头像 李华
网站建设 2026/5/2 5:48:23

保姆级教程:在Ubuntu18.04上搞定速腾16线雷达与Fast-LIO2的完整配置流程

速腾16线雷达与Fast-LIO2在Ubuntu18.04上的终极配置指南 当第一次拿到速腾16线雷达和IMU设备时,面对Ubuntu系统、ROS环境和Fast-LIO2算法的复杂配置流程,很多开发者都会感到无从下手。本文将带你一步步完成从系统环境准备到最终算法运行的完整流程&#…

作者头像 李华
网站建设 2026/5/2 5:40:47

Taotoken 模型广场在辅助技术选型决策中的实际作用体验

Taotoken 模型广场在辅助技术选型决策中的实际作用体验 1. 模型选型的核心挑战 当开发者启动涉及大模型能力的新项目时,技术选型往往面临多重挑战。不同模型在代码生成、文本总结等任务上的表现差异显著,而厂商文档对计费规则和接口规范的描述分散在各…

作者头像 李华