news 2026/6/10 23:27:43

代码随想录算法训练营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/6/10 10:54:33

Windows下Python安装Stable Diffusion 3.5 FP8踩坑总结

Windows下Python安装Stable Diffusion 3.5 FP8踩坑总结 在AI生成图像技术飞速发展的今天,越来越多的设计师、开发者和内容创作者希望在本地设备上运行高性能的文生图模型。然而,当面对像 Stable Diffusion 3.5 这样参数庞大、显存需求高的模型时&#x…

作者头像 李华
网站建设 2026/6/10 10:54:30

百度指数飙升!Qwen-Image成近期AI热搜词

Qwen-Image:从技术跃迁到产业重塑的AIGC新范式 在广告设计团队还在为一张海报反复修改三天时,某新锐品牌已经用自然语言生成了整套视觉方案——“青绿山水背景,书法字体‘静雅’居中,竹影斑驳”。按下回车,10241024高清…

作者头像 李华
网站建设 2026/6/10 10:54:16

毕业/期刊/职称论文不愁!6款免费AI工具一键极速生成,省时超80%

在学术的道路上,论文写作往往是大学生、研究生和科研人员面临的一大挑战。从选题到定稿,每一个环节都需要耗费大量的时间和精力。不过,随着人工智能技术的发展,一系列AI论文工具应运而生,为我们的论文写作带来了极大的…

作者头像 李华
网站建设 2026/6/10 2:01:27

Stable Diffusion 3.5 FP8 vs 原始版本:显存占用对比实测报告

Stable Diffusion 3.5 FP8 vs 原始版本:显存占用对比实测报告 在生成式 AI 的浪潮中,Stable Diffusion 系列始终扮演着“开源先锋”的角色。从 SD1.x 到如今的 Stable Diffusion 3.5(SD3.5),每一次迭代都在图像质量、语…

作者头像 李华
网站建设 2026/6/10 17:05:09

Wan2.2-T2V-5B生成结果如何评估?基于DiskInfo下载官网的数据存储建议

Wan2.2-T2V-5B生成结果如何评估?基于DiskInfo下载官网的数据存储建议 在短视频内容爆炸式增长的今天,用户对“秒级响应、低成本、高质量”视频生成的需求已经从理想变为刚需。无论是社交媒体运营者需要快速产出创意素材,还是开发者希望在本地…

作者头像 李华
网站建设 2026/6/10 10:51:41

OpenSpec生态共建:LLama-Factory贡献者招募计划启动

OpenSpec生态共建:LLama-Factory贡献者招募计划启动 在大模型技术飞速演进的今天,一个现实问题日益凸显:尽管像LLaMA、Qwen这样的预训练语言模型展现出惊人的通用能力,但真正落地到具体行业场景时——无论是金融客服中的合规问答&…

作者头像 李华