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

字符串模式匹配算法 KMP

子串与子序列

中文名称 常见英文名称 解释
子串 \(\tt substring\) 连续的选择一段字符(可以全选、可以不选)组成的新字符串
子序列 \(\tt subsequence\) 从左到右取出若干个字符(可以不取、可以全取、可以不连续)组成的新字符串

字符串模式匹配算法 KMP

应用:

  1. 在字符串中查找子串;
  2. 最小周期:字符串长度-整个字符串的 \(\tt border\)
  3. 最小循环节:区别于周期,当字符串长度 \(n \bmod (n - nxt[n]) = 0\) 时,等于最小周期,否则为 \(n\)

以最坏 \(\mathcal O(N+M)\) 的时间计算 \(t\)\(s\) 中出现的全部位置。

auto kmp = [&](string s, string t) {int n = s.size(), m = t.size();vector<int> kmp(m + 1), ans;s = "@" + s;t = "@" + t;for (int i = 2, j = 0; i <= m; i++) {while (j && t[i] != t[j + 1]) {j = kmp[j];}j += t[i] == t[j + 1];kmp[i] = j;}for (int i = 1, j = 0; i <= n; i++) {while (j && s[i] != t[j + 1]) {j = kmp[j];}if (s[i] == t[j + 1] && ++j == m) {ans.push_back(i - m + 1); // t 在 s 中出现的位置}}return ans;
};
http://www.jsqmd.com/news/21223/

相关文章:

  • Z函数(扩展 KMP)
  • 常用例题
  • 实验报告3
  • 2025年环评公司权威推荐排行榜,环评手续,环评报告,环评验收,专业高效服务助力企业合规发展
  • 2025年棒球帽厂家推荐排行榜,运动棒球帽,时尚棒球帽,定制棒球帽,防晒棒球帽公司精选榜单
  • 常见结论与例题
  • 单芯片方案分享-CH336F-USB拓展坞+百兆网卡+读卡器+100W快充芯片
  • 于状压的线性 RMQ 算法
  • Flink编程模型 - 详解
  • 工业4.0下的边缘存储设计:材料就地处理,响应更快更安全
  • 服务器关机用halt、poweroff还是shutdown -h now?一文帮你说明
  • KD Tree
  • 小波矩阵树:高效静态区间第 K 大查询
  • Seata用法
  • Day3多媒体标签——视频与音频
  • 分数运算类
  • 坐标压缩与离散化
  • 撸一个功能强大的基于语义的图像检索系统
  • 提交一张 PPT,参与 RTE2025 全球语音智能体云展示
  • 完整教程:深入解析AppCrawler:开源自动遍历测试工具配置指南
  • 解释 EIP-4337
  • 数论常见结论及例题
  • 材料包含与下载漏洞
  • N8N Workflow Collection - 专业级自动化工作流库 - 详解
  • 完整教程:Elasticsearch面试精讲 Day 23:安全认证与权限控制
  • Min25 筛
  • 莫比乌斯函数/反演
  • 同余方程组、拓展中国剩余定理 excrt
  • 完整教程:微软2025教育AI报告:教育群体采用AI的比例显著提升
  • 求解连续数字的正约数集合——倍数法