news 2026/4/22 15:32:27

代码随想录算法训练营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/4/23 11:28:14

pywencai Cookie获取终极指南:从基础到实战的完整解决方案

pywencai Cookie获取终极指南:从基础到实战的完整解决方案 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在金融数据获取领域,pywencai项目为开发者提供了便捷的同花顺问财数据接口。然而…

作者头像 李华
网站建设 2026/4/18 12:24:23

Transformer layer normalization在Qwen-Image中的实现细节

Transformer层归一化在Qwen-Image中的实现细节 在当前生成式AI迅猛发展的浪潮中,文生图(Text-to-Image)模型已从实验室走向工业级应用,成为广告设计、影视预演乃至创意表达的核心工具。随着用户对图像质量、语义精准度和交互灵活性…

作者头像 李华
网站建设 2026/4/23 11:27:21

Stable Diffusion 3.5 FP8支持1024×1024高清输出,排版能力再升级

Stable Diffusion 3.5 FP8 支持 10241024 高清输出,排版能力再升级 在生成式 AI 快速渗透内容创作领域的今天,一个核心矛盾始终存在:我们渴望模型生成越来越精细、结构更复杂的图像,但随之而来的计算成本和部署门槛也水涨船高。St…

作者头像 李华
网站建设 2026/4/23 1:02:31

LyricsX桌面歌词工具:让音乐与歌词完美融合的终极配置指南

LyricsX桌面歌词工具:让音乐与歌词完美融合的终极配置指南 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 在享受音乐的过程中,你是否曾为频繁切换…

作者头像 李华