KMP 小总结
来源:互联网 发布:青岛十五中行知楼 编辑:程序博客网 时间:2024/06/04 19:54
以下是我目前做题遇到的知识点:(如有不足请指出,后续会更新)
nex数组代码:
void get_next(){int j=-1,i=0;int m=strlen(b);nex[0]=-1;while(i<m){if(j==-1 || b[i]==b[j])nex[++i]=++j;else j=nex[j];}}
KMP算法代码:
int KMP(char a[],char b[]){//j是子串下标 get_next(a,b);int i=0;int j=0;int n=strlen(a);int m=strlen(b);while(i<n){if(j==-1 || a[i]==b[j]){i++;j++;}else j=nex[j];}}
实用知识点:
KMP算法是关于匹配字符串的算法
循环节长度:
len-nex[len]
对于不全循环节至少需要几个字符:
int n = strlen(b);
int len= n - nex[n]; //循环节长度
int num=n/len; //循环节个数
int k =len - (n - num*len);
if(k == len && num > 1) k = 0;
求循环次数:
在get_nxet()数组中加入 j==m 的判断条件
若求不重复的循环次数从总数加一后 j从0开始(初始值)
求重叠式的为 j=nex[j]
关于 nex[]数组的值:
nex[len]表示第len位之前的字符串中 前nex[len]位 和 后nex[len]相等
即 adbdad nex[6]=2;
阅读全文
0 0
- KMP算法小总结
- KMP 小总结
- kmp总结
- KMP总结
- kmp总结
- KMP总结
- KMP总结
- KMP总结
- KMP总结
- KMP (KMP+拓展KMP)算法总结
- KMP算法小析
- 小算法--KMP
- KMP小讲
- KMP算法小解析
- 小谈KMP算法
- KMP小模板
- KMP废柴のKMP小练
- KMP算法总结
- GHGL工具类代码
- 【IDEA】Mybatis Plugin插件安装破解及使用
- java多个实例对象线程同步无效的原因以及解决方案
- c语言中 char* 和 unsigned char* 的区别浅析
- linux中docker安装
- KMP 小总结
- 欢迎使用CSDN-markdown编辑器
- BufferedWriter的用法
- HDU 3613 Best Reward Manacher
- window下的virtualenv的使用和requests中socks使用
- sublime快捷键
- 文件夹的复制(文件的递归加IO流的文件读写 )
- Redis在windows下安装过程
- DateInputStream/DateOutputStream(数据输入/输出流)