题意:
给定一个长为L的字符串(L
求Π(num[i]+1)%1000000007
这就是KMP算法的一个变形。。。首先求出next数组,顺便求出cnt数组,代表长度为i的前缀经过几次fix=next[fix]会得到0,然后重新匹配一次,这次注意当fix*2>i的时候令fix=next[fix]即可
这题有坑 切忌用num数组代替next
此外勿忘开long long
这题就水过去了。...
分类:
其他好文 时间:
2014-09-01 14:06:13
阅读次数:
247
KMP算法是一种改进的字符串匹配算法。适用于模式串P有循环重复段的情况下。 原理: 主串 S:S1, S2, …, …, …, …, …, …, Si-k+1, …, Si-1, Si 模式串P:(P1, P2, …, Pk-1,) Pk, …, (Pj-k+1, …, Pj-1,) Pj Pj与S...
分类:
其他好文 时间:
2014-08-30 13:49:09
阅读次数:
221
昨天晚上阿里的“鄙视”题让我非常捉鸡。。。其实抛去那些让人完全搞不明白的选择题(吐槽一下有两个选项一样的单选题),后面的附加题还是很一般的。寻找公共最长字串的那个题我一看就想到KMP算法,然后用KMP解决了,但是在这过程中发现根本无法顺畅的写出KMP本身,这有点囧。在leetcode上A了三次这个题...
分类:
其他好文 时间:
2014-08-30 12:33:39
阅读次数:
186
KMP算法是一种改进的字符串匹配算法。适用于模式串P有循环重复段的情况下。原理:主串 S:S1, S2, …, …, …, …, …, …, Si-k+1, …, Si-1, Si模式串P:(P1, P2, …, Pk-1,) Pk, …, (Pj-k+1, …, Pj-1,) PjPj与Si不匹配...
分类:
其他好文 时间:
2014-08-29 17:59:38
阅读次数:
187
今天又看了一遍KMP,感觉真的懂了...就来这儿发一下心得吧.KMP算法其实就是暴力的改进版.让我们看看暴力的匹配.Original string: ababababcbbababababcPattern string: abababc步骤:ababababcbbababababcabababc.....
分类:
其他好文 时间:
2014-08-29 14:28:37
阅读次数:
169
var str="abcbababcbababcbababcabcbaba";//主串var ts="bcabcbaba";//子串function BF(s,t){//BF算法 var i=0,j=0,v=-1; while(i=t.length){ ...
分类:
编程语言 时间:
2014-08-26 13:27:06
阅读次数:
277
kmp算法的应用不懂dev-c++搞什么,某个循环下不去,一直卡在那里....或许他今天心情不好?明天再试试吧...不浪费时间纠结这个了这题就是很裸的kmp算法的应用啦...模板题然后顺便学习了一下如何将数字转成字符串#includeitoa(num,a,10)注意这里的a是字符串或是字符数组,不能...
分类:
其他好文 时间:
2014-08-26 09:48:05
阅读次数:
195
刷vj的时候遇到一个kmp算法,就学习了一下看了某位大神的清楚解释略有领会看了一遍之后,可以清楚的知道 void kmp 的模拟过程,就是j指针的运动情况但是j指针的运动是如何具体的实现,这其实也就是kmp算法的核心kmp算法和朴素算法的区别就在于这个前缀函数getnext有点类似于熟悉的邻接表啊h...
分类:
其他好文 时间:
2014-08-25 22:40:44
阅读次数:
211
/*
* KMP 模式匹配算法
*/
#include
#include
using namespace std;
/*
* 计算模式串的next数组
* 模式串既做主串,又做模式串,进行匹配
* 时间复杂度为O(m),m为模式串的长度
*/
void countNext(char* strPattern, int len, int* next)
{
int i = 0, j...
分类:
其他好文 时间:
2014-08-25 17:01:04
阅读次数:
214
题目:求一个串的最大的循环次数。
分析:dp,KMP,字符串。这里利用KMP算法。
KMP的next函数是跳跃到最近的串的递归结构位置(串元素取值0 ~ len-1);
由KMP过程可知:
如果存在循环节,则S[0 ~ next[len]-1] 与 S[len-next[len] ~ len-1]相匹配;
...
分类:
其他好文 时间:
2014-08-21 22:48:45
阅读次数:
343