数据结构 | 串的模式匹配 KMP算法 next数组
2023-09-11 14:19:29 时间
预备知识
一. 朴素模式匹配算法
二、KMP算法
- KMP算法:最长相同前后缀,每次匹配都从匹配失误的地方开始匹配
- i 不动
三、求next数组
1、最长公共前后缀
假设有一个串P=“p0p1p2 …pj-1pj”。如果存在p0p1…pk-1pk = pj-kpj-k+1…pj-1pj,我们就说在P串中有一个最大长度为k+1的公共前后缀。
2、如何寻找前后缀???
找前缀时,要找除了最后一个字符的所有子串。
找后缀时,要找除了第一个字符的所有子串。
这个表的含义是在当前字符作为最后一个字符时,当前子串所拥有的公共前后缀最长长度。例如当c作为最后一个字符时,当前子串abaabc并没有公共前后缀。
即 看该位置之前的( 不包括该位置 ) 的 最长相同前后缀 最后一个元素的下一个位置
参考来源:
cKMP算法详解_yyzsir的博客-CSDN博客_kmp算法
王道数据结构
相关文章
- 【算法基础——第七讲】双指针
- 经典的7种排序算法 原理C++实现
- JAVA描述算法和数据结构(01):稀疏数组和二维数组转换
- 【算法】【矩阵和数组模块】数组中的最长连续序列长度
- 【算法】【递归与动态规划模块】数组的最长子序列
- (《机器学习》完整版系列)第14章 概率图模型——14.10 变分推断用于EM算法
- PHP二分查找算法
- 反向传播算法从原理到实现
- LED室内定位算法:RSS,TOA,AOA,TDOA(转载)
- 基于affine+sift特征提取的图像配准算法matlab仿真
- 深度学习算法工程师常用基础面试题汇集
- C#,字符串匹配(模式搜索)Boyer Moore算法的源代码
- JavaScript - 数组排序 6 种常见算法
- Letcode数组相关算法
- 408 | 数据结构代码算法题模板技巧 之 顺序表(数组)
- 【C++】STL常用算法
- LeetCode384之打乱数组(相关话题:随机算法,洗牌算法)
- 133、【贪心算法】leetcode ——1005. K 次取反后最大化的数组和(模拟变化+贪心策略)(C++版本)
- 华为OD机试 - 任务调度(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -合规数组(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -快递运输(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 算法8:巧妙的邻接表(数组实现)
- 初探STL之算法
- 【源代码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
- js 数组 数组 最大值、最小值 算法(转载)
- leetcode算法53.最大子数组和