随笔分类 - KMP
摘要:*算法介绍:扩展KMP算法是对KMP算法的一种扩展,对于求两个字符串的公共部分非常有效。题目可以有多种变化。最普通的的是给定母串text与子串part。求数组extend[i],extend[i]表示text[i...n]字符串与part最长前缀的长度。*思路:1.主代码:与KMP的思路一致,我们设next数组表示:next[i...n]与next数组本身的最长公共前缀长度。假设我们现在已经知道extend[0....i]的值,接下来要求extend[i+1]的值。设1=k+extend[k] 我们目前只能确定(1)中的L个字符匹配,接下来不能确定,所以需要挨个比较,并且比较完后需令:k=i+
阅读全文
摘要:*介绍: KMP算法是在给定的一串字符串中查找是否有目标串。*分析:1、一般解法 对于以上问题,假如用朴素算法,我们容易想到:用目标串(长度为n)的第1个字符依次与给定串(长度为m)的第1个至最后一个字符对齐匹配,直到找到目标串为止。这样算法复杂度是m*n。2、KMP算法:思路分析: KMP算法通过建立一个数组(一般命名为next)来记录目标串的自身特征从而简化匹配过程,令算法的复杂度降至m+n。 举例,假设目标串为: a b c a b c d d e a 对应next数组的值为: 0 0 0 1 2 3 0 0 0 1 通过观察我们会发现next数组记录的是以当前字...
阅读全文

浙公网安备 33010602011771号