news 2026/8/15 19:14:12

代码随想录算法训练营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/8/15 8:58:55

ComfyUI与Cherry Studio协作:打造个性化AI创作空间

ComfyUI与Cherry Studio协作:打造个性化AI创作空间 在AI内容生成的浪潮中,越来越多的创作者发现,传统的“一键出图”工具虽然上手快,但一旦进入复杂项目或团队协作场景,便暴露出流程不可控、设置难复用、调试像猜谜等痛…

作者头像 李华
网站建设 2026/8/14 20:46:30

终极轨道计算指南:3个实战技巧解析

终极轨道计算指南:3个实战技巧解析 【免费下载链接】sgp4 Simplified perturbations models 项目地址: https://gitcode.com/gh_mirrors/sg/sgp4 轨道计算是航天工程中至关重要的基础技术,它能够精确预测卫星在太空中的位置和运动轨迹。SGP4&…

作者头像 李华
网站建设 2026/8/15 9:45:34

时区相关的问题,开发如何自测?

时区相关的问题,开发如何自测? 在java服务启动时,通过 Intellij Idea 的 Vm Option 加上启动参数。。 比如 -Duser.timezoneUTC , 就可以指定时区为标准的 UTC 0时区。 通过这些启动参数,开发就可以直接在本地自测时区…

作者头像 李华
网站建设 2026/8/15 11:28:41

城通网盘直链解析神器:三步解锁高速下载新体验

城通网盘直链解析神器:三步解锁高速下载新体验 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘繁琐的下载流程而烦恼吗?城通网盘直链解析工具正是你需要的解决方案…

作者头像 李华
网站建设 2026/8/14 17:13:26

21届智能车赛外延创意:用车载语音指令触发ACE-Step音乐生成

智能车赛外延创意:用车载语音指令触发ACE-Step音乐生成 在一辆飞驰的智能汽车中,驾驶员轻声说了一句:“来点轻松的爵士乐,带点萨克斯,像深夜电台那样。”话音刚落,车内音响便流淌出一段即兴创作的原创旋律—…

作者头像 李华
网站建设 2026/8/14 17:13:24

2025年8款AI论文生成器大揭秘,一键极速写超长篇论文,效率提升300%!

在毕业季与科研申报高峰的双重压力下,大学生、研究生、科研人员最怕的不是课题难,而是写不完、写不好、改到崩溃。好消息是,2025年的AI论文工具已进化到能让你喝杯咖啡的时间,就拿到一篇高质量初稿,不仅轻松搞定万字长…

作者头像 李华