随笔分类 -  kmp

摘要:题目大意: 给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀的长度p 基本思路: •KMP算法中next数组的含义是什么? •next数组:失配指针 •如果目标串的当 阅读全文
posted @ 2017-12-26 20:25 愿~得偿所愿,不负时光 阅读(192) 评论(0) 推荐(0)
摘要:题目大意: 求一个字符串中某一个既是前缀又是后缀的前缀的结尾下标; 基本思路: 从_next[len]开始找_next[_next[len]],再找_next[_next[_next[len]]],一直找到0; 代码如下: 阅读全文
posted @ 2017-12-23 18:20 愿~得偿所愿,不负时光 阅读(155) 评论(0) 推荐(0)
摘要:题目大意: 求最少在结尾补上几个字符才能形成循环 基本思路: next数组有一个性质,长度为len的字符串的最小长度的循环节(可能没有,但有的话一定是)len-next【len】,因为最长不能是原串,所以最长为next【len】,所以最短的,也就是最基本的循环节就是len-next[【len】; 对 阅读全文
posted @ 2017-12-21 16:47 愿~得偿所愿,不负时光 阅读(150) 评论(0) 推荐(0)
摘要://这个模板主串和模式串下标都是从0开始的 //next数组下标是从1开始的 char S[maxn],T[maxn]; int _next[maxn]; int slen,tlen; //求模式串的next数组 void GetNext(){ int j=0,k=-1; _next[0]=-1; while(j0&&S[i]!=T[j]){ j... 阅读全文
posted @ 2017-12-02 16:23 愿~得偿所愿,不负时光 阅读(202) 评论(0) 推荐(0)