news 2026/4/18 1:36:08

代码随想录算法训练营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/18 7:42:26

如何快速解决电脑卡顿:Mem Reduct内存管理的完整指南

如何快速解决电脑卡顿:Mem Reduct内存管理的完整指南 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 电脑…

作者头像 李华
网站建设 2026/4/17 23:35:23

C语言实现打印杨辉三角(附带源码)

一、项目背景详细介绍在C语言程序设计与算法基础教学中,二维数组与递推关系是两个非常重要的知识点,而“杨辉三角(Pascal Triangle)”正是将这两个知识点完美结合的经典示例。杨辉三角不仅在程序设计教学中被广泛使用,…

作者头像 李华
网站建设 2026/4/18 5:33:39

Softmax输出概率分布可视化:理解ACE-Step音符决策过程

Softmax输出概率分布可视化:理解ACE-Step音符决策过程 在AI逐渐渗透创意产业的今天,音乐创作正经历一场静默却深远的变革。过去依赖多年训练与艺术直觉的工作,如今可以通过一个模型、一段提示词,甚至是一段哼唱旋律快速生成结构完…

作者头像 李华
网站建设 2026/4/17 22:05:06

如何轻松绕过付费墙:5款最佳免费阅读工具终极指南

如何轻松绕过付费墙:5款最佳免费阅读工具终极指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字化阅读时代,你是否经常遇到这样的情况:点击…

作者头像 李华
网站建设 2026/4/18 5:37:45

抖音批量下载助手:5步搞定海量视频智能管理终极指南

抖音批量下载助手:5步搞定海量视频智能管理终极指南 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 还在为手动保存抖音视频而烦恼吗?抖音批量下载助手让你轻松实现自动化视频采集&a…

作者头像 李华
网站建设 2026/4/18 7:03:09

Python虚拟环境配置Qwen-Image最佳实践

Python虚拟环境配置Qwen-Image最佳实践 在AI生成内容(AIGC)迅速渗透创意产业的今天,一个常见的痛点浮出水面:为什么同样的提示词,在开发机上能生成惊艳海报,到了服务器却报错“CUDA out of memory”&#x…

作者头像 李华