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

29-算法打卡-字符串-KMP算法理论2-第二十九天

1、KMP算法前缀表计算逻辑

可以查看上一章节的前缀表概念以及逻辑,KMP算法基础理论[基础概念、前缀、后缀、最长公共前后缀、前缀表]

2、KMP算法前缀表使用

当模式串和文本串匹配失败的时候,前缀表会告诉我们下一次的匹配中,模式串应该跳到那个位置。
a、文本串和模式串指向的字符相等则继续向下移动
b、文本串和模式串指向的字符不相等则模式串向左移动到对应next数组的前一位对应的数值。
        如图中,模式串向左移动2位。

3、获取KMP算法前缀表

3.1 思路

a、初始化:两个指针i,j;  j即是指向前缀的末尾也表示子串的最长公共前后缀长度;i是指向后缀的末尾也是指向next数组待更新的位置; j=0; next[0]=j
b、前后缀相同:指针j向右移动
c、前后缀不同:指针j移动到next[j-1]的位置
d、更新next数组

3.2 代码实现

private void getNext(int[] next, String s) {int j = 0; // 初始化next[0] = 0;for (int i = 1; i < s.length(); i++) {while (j > 0 && s.charAt(j) != s.charAt(i))  j = next[j - 1]; if (s.charAt(j) == s.charAt(i)) j++;next[i] = j; }}

相关文章:

  • Adobe Photoshop(PS)2022 版安装与下载教程
  • 一篇入门之-评分卡变量分箱(卡方分箱、决策树分箱、KS分箱等)实操例子
  • CSS预处理器
  • 如何快速轻松地恢复未保存的 Word 文档:简短指南
  • 【2025 最新前沿 MCP 教程 04】通信渠道:理解 MCP 传输机制
  • AEB法规升级后的市场预测与分析:技术迭代、政策驱动与产业变革
  • MySQL 常用语句教程
  • RAG技术解析:以Text2SQL为例看检索增强生成的全流程应用
  • C++学习笔记(四十)——STL之归约算法
  • Python Pandas实现ABC_manage_channel逻辑
  • JAVAEE初阶01
  • 【C语言】柔性数组
  • SEO新手快速上手核心步骤
  • 解释型语言和编译型语言
  • 部署yolo到k230教程
  • DataStreamAPI实践原理——计算模型
  • 类的高级特性与语法细节
  • 线程池(五):线程池使用场景问题
  • Qt软件开发-摄像头检测使用软件V1.1
  • Redis和MQ的区别
  • 持续更新丨伊朗港口爆炸事件已致561人受伤
  • “90后”高层建筑返青春:功能调整的技术路径和运营考验
  • 游戏论|迟来的忍者与武士:从《刺客信条:影》论多元话语的争议
  • 经济日报:上海车展展现独特魅力
  • 共话城市自然之美,“微观黄浦”自媒体网络大V沙龙首场活动举行
  • 美总统批准海底采矿,外交部:擅自授权开发损害国际社会共同利益