news 2026/5/25 18:13:15

代码随想录算法训练营day 9:KMP算法,字符串匹配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录算法训练营day 9:KMP算法,字符串匹配

KMP算法

KMP算法是一个字符串匹配算法,用来在一个主串中高效地查找模式串第一次(或所有)出现的位置。简要概括其思想就是主串永远向前走,模式串永远有策略地重新对齐。

如果用暴力解,每次回退主串指针都会很耗时,显然,为了单单一个字符的匹配失败而回退整个模式串指针和主串指针显然不划算。所以KMP核心思想是:当匹配失败时,不回退主串指针,而是有策略地移动模式串指针。

KMP 的核心突破点

利用已匹配的信息:当模式串匹配到s[ i ]失败时,比较指针回退到:从s[0]到s[i - 1]这段模式串中,前缀与后缀相同的最长长度之后的那个字符。

为什么?这段模式串的某个前缀与某个后缀相同,说明不用回退整个模式串,直接让模式串的前缀与主串已匹配的后缀对齐(因为已经说明它们相等),这样,主串永远向前走,模式串永远有策略地重新对齐。

怎么知道匹配失败模式串到哪里重新对齐呢?记录在s[0]到s[i - 1]这段模式串中的前后缀相同的最长长度,用一个next数组,next[ i ]存储下标0到下标 i - 1 的前后缀信息。假设next[ i ] = n,则前n个字符已经默认匹配成功,所以从这个长度的后面一个字符开始即可。

相关习题

LeetCode 28.找出字符串中第一个匹配项的下标

LeetCode 459.重复的子字符串

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

Dify智能体平台接入ACE-Step:打造会作曲的聊天机器人

Dify智能体平台接入ACE-Step:打造会作曲的聊天机器人 在影视剪辑师为一段情绪饱满的画面反复试听数十首背景音乐时,在独立游戏开发者苦于找不到合适配乐而推迟上线日期时,在一位普通用户只是想“写一首适合雨天听的吉他曲”却被复杂的DAW软件…

作者头像 李华
网站建设 2026/5/25 11:52:31

抖音内容保存神器:3分钟掌握高清视频批量下载技巧

抖音内容保存神器:3分钟掌握高清视频批量下载技巧 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 想要永久保存抖音上的精彩内容?无论是喜欢的短视频、珍贵的直播回放,还是…

作者头像 李华
网站建设 2026/5/25 3:18:04

5分钟掌握HashCalculator:文件哈希批量修改的革命性突破

5分钟掌握HashCalculator:文件哈希批量修改的革命性突破 【免费下载链接】HashCalculator 一个文件哈希值批量计算器,支持将结果导出为文本文件功能和批量检验哈希值功能。 项目地址: https://gitcode.com/gh_mirrors/ha/HashCalculator 在现代数…

作者头像 李华
网站建设 2026/5/25 12:19:18

别浪费职业优势!这 5 类人挖漏洞副业月入过万,你符合吗?

网络安全副业新选择:挖洞也能赚钱,这5类人最适合!收藏起来慢慢学 文章分析了漏洞挖掘作为高收益副业的可行性,详细列举了5类最适合从事这一领域的职业(网络安全工程师、程序员、IT运维、学生、自由职业者)…

作者头像 李华
网站建设 2026/5/25 4:51:41

CompressO终极视频压缩指南:3步实现95%体积缩减

CompressO终极视频压缩指南:3步实现95%体积缩减 【免费下载链接】compressO Convert any video into a tiny size. 项目地址: https://gitcode.com/gh_mirrors/co/compressO CompressO是一款完全免费的开源视频压缩工具,基于先进的FFmpeg技术&…

作者头像 李华