
算法与数据结构
nai_dev
学无止境~
展开
-
Kmp算法的next数组实现(精简)
kmp算法戳这里->kmp算法精简说明 这里我们学习next数组是如何通过代码实现一一取值的。 一、如何实现 变量i:用于遍历next数组下标给一一赋值; 变量j:用于指向上一段的最长公共前缀的下一位。 例如:当我们在算“abad”的next值时, 前一段就是”aba“,此时j指向的就是b。 ①下标i项与下标j项比较; 相等,那直接j移到下一位,相同前后缀就是(j++)的值; 不相等,j需要回溯: 回溯我们令查看下标j-1的next数组值,发现为1;令j=next[j-1]; 原本的 j.原创 2020-05-14 08:53:48 · 347 阅读 · 0 评论 -
KMP算法(最精简的理解)
算法理解以简略为主,太多理论解释容易绕晕。 主要有以下三个数组: 匹配串:字符型 模式串:字符型 next[i]数组:int 一、next[i]数组说明(先了解这个比较好学) next[i]是专门针对模式串的(功能我们后面结合实例介绍): 模式串 a b c d a b d next[i]数值 0 0 0 0 1 2 0 ①首先我们了解前缀和后缀 前缀:(这里直接距离理解,比概念有用) abc的前缀包括{a,ab}; abcd的前缀包括{a,ab,abc}; 可以看出.原创 2020-05-13 15:35:53 · 320 阅读 · 0 评论