随笔分类 - kmp
摘要:题目大意: 给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀的长度p 基本思路: •KMP算法中next数组的含义是什么? •next数组:失配指针 •如果目标串的当
阅读全文
摘要:题目大意: 求一个字符串中某一个既是前缀又是后缀的前缀的结尾下标; 基本思路: 从_next[len]开始找_next[_next[len]],再找_next[_next[_next[len]]],一直找到0; 代码如下:
阅读全文
摘要:题目大意: 求最少在结尾补上几个字符才能形成循环 基本思路: next数组有一个性质,长度为len的字符串的最小长度的循环节(可能没有,但有的话一定是)len-next【len】,因为最长不能是原串,所以最长为next【len】,所以最短的,也就是最基本的循环节就是len-next[【len】; 对
阅读全文
摘要://这个模板主串和模式串下标都是从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...
阅读全文