当前位置: 首页 > news >正文

KMP 学习笔记

何为KMP?

我们先考虑一个字符串匹配的问题

暴力求解

一个简单地方法是,在主串枚举每一个字符,与模式串一位一位的匹配,失配则从主串的下一个字符开始,与模式串的第一位匹配。

这样匹配时间复杂度显然是不过关的。

KMP 算法

暴力算法之所以低效,因为它对主串中每个字符进行了大量的重复的比较,而 KMP 算法可以很好地解决这个问题。

这里先引入一个概念:border

border‌是字符串的最长公共前后缀,在KMP算法中用于优化字符串匹配效率,通过预处理border信息可跳过无效匹配位置

例如 ababa 这个字符串,他的前缀是 aababaabab。后缀是 abaabababa。故该字符串的 border 为 aba

注意,前缀和后缀的长度都不能和字符串等长,故 border 的长度也不能和字符串等长。

再引入一个概念:Next 表

\(Next\) 表是一个存储 border 的表,其中 \(Next_i\) 表示以 \(S_i\) 结尾的前缀的 border。

如何求border?

要想做到合理的时间复杂度,border必须要在 \(O(n)\) 的时间复杂度下求出来,否则 KMP 就会退化。

若前缀往后一位与前缀 border 往后一位不相同,则往前找 border 的 border,直到出现相同的,设这个值为 \(j\)

如果 \(S_i = S_j\),则 \(Next_{i + 1} = j + 1\)

否则 \(next_{i + 1} = 0\)

例题:P3375 【模板】KMP

http://www.jsqmd.com/news/27123/

相关文章:

  • CentOS7进入单用户模式
  • 实例方法实际上也是类属性,这个说法对吗?——实例的命名空间和类的命名空间详解
  • 2025年靠谱的升降机TOP实力厂家推荐榜
  • CSP-S 2025游寄
  • 2025 年洗碗机厂家最新推荐榜,技术实力与市场口碑深度解析,筛选高品质设备制造企业长龙式 / 揭盖式 / 通道式洗碗机厂家推荐
  • 2025年诚信的转轮式热回收空调机组最新TOP厂家排名
  • 2025年热门的五金铰链厂家选购指南与推荐
  • 2025 年国内无缝钢管厂家最新推荐:基于协会测评的优质企业榜单及选购指南A106B/SA210C/ 25MnG/SA53B/A53B /L245NS/P22 无缝钢管厂家推荐
  • 2025年优质的物联数字化配电柜热门厂家推荐榜单
  • 2025 年最新推荐国内无缝钢管优质厂家榜单:含 20#/Q355 系列 / 20G 等材质企业精选
  • 2025年热门的薄膜电动搬运车高评价厂家推荐榜
  • 口碑好的枸杞品牌:探索2025年优质选择指南
  • CF1603C Extreme Extension
  • 定位informix oninit进程CPU占用过高的一般步骤
  • 题解:P7213 [JOISC 2020] 最古の遺跡 3
  • 2025年正规的净化材料净化板厂家最新推荐权威榜
  • 2025年诚信的渔用钢丝绳索具厂家推荐及采购参考
  • 2025年比较好的钢质艺术楼梯用户口碑最好的厂家榜
  • 2025年正规的分子筛空分制氮机厂家推荐及选择指南
  • 2025年比较好的KTV瓷砖最新TOP品牌厂家排行
  • CSP缺省源用什么?看看这篇文章就知道了!
  • 【GitHub每日速递 251031】支持1110+语言、可语音克隆!这款电子书转有声书神器不容错过
  • 2025年热门的拉力机厂家推荐及选购参考榜
  • 白名单还能坚持多久
  • 2025 年 10 月传感器厂家最新推荐,技术实力与市场口碑深度解析磁致伸缩位移/防爆位移/防水位移/隔爆位移/线性位移传感器厂家推荐
  • 2025年专业的多圈电位器最新TOP厂家排名
  • 2025年有实力的三相电力设备最新TOP厂家排名
  • 强化学习资料
  • 2025年靠谱的1000级净化工程厂家最新推荐排行榜:实力源头加工公司
  • 2025年口碑好的烟气电加热器厂家推荐及采购参考