KMP算法,关键在于next表的构建
来源:互联网 发布:苹果一体机数据恢复 编辑:程序博客网 时间:2024/06/05 14:52
KMP算法的优点就是在于它的高效率,而这种高效率来自于自身串的比较,得出在与母串失配时下一次回溯的位置,从而达到滑动向下比较,从而增大比较的效率;
KMP算法的关键之处就是在于构建next表,这个表是自身与自身的比较结果;
初学者 附代码:
//#include <bits/stdc++.h>#include <iostream>#include <cstring>#include <string>using namespace std;int Next[10000];void get_next(char b[]){int i = 0, j = -1; Next[0] = -1;//首先初始化Next[0]=-1while (b[i] != '\0'){if (j == -1 || b[i] == b[j]){++i;++j;Next[i] = j;}elsej = Next[j];}}//打表结束//KMPvoid Index_KMP(char a[], char b[]){get_next(b);int i = 0,j = 0;int len1 = strlen(a), len2 = strlen(b);while (i < len1&&j < len2)//任意子川或者母串结束都视为比较结束{if (j == -1 || a[i] == b[j]){++i;++j;}else j = Next[j];//在next表中查找回溯位置}if (j >= len2) cout << i - len2 + 1 << endl;else cout << "-1" << endl;}int main(){char a[1000], b[1000];while (cin >> a >> b){Index_KMP(a, b);}return 0;}
阅读全文
0 0
- KMP算法,关键在于next表的构建
- KMP算法的next数组
- KMP算法的next详解
- KMP算法next的求法
- KMP算法next的变形
- KMP算法,Next跳转表的应用(1)
- KMP算法和KMP算法中next数组的讲解
- KMP算法的next、next value数组的手工计算
- 关于KMP算法当中的next函数
- kmp算法详解,next讲的不错
- KMP算法next值的求解
- KMP算法中的NEXT数组的应用
- 关于KMP算法当中的next函数
- 完整的KMP算法(包括求出next)
- KMP算法中的next函数的证明
- 关于KMP算法的NEXT数组解释
- KMP算法的next[]数组通俗解释
- KMP算法中next函数的实现
- Opencv常见错误整理
- web.xml配置servlet
- CodeForces
- 三、宇宙中的环境因素
- java面试题博客地址
- KMP算法,关键在于next表的构建
- Unity3D利用Photon实现实时联网对战(二)PUN SDK介绍
- .脏读,不可重复读,幻象读 丢失更新(乐观锁,悲观锁)
- tensorflow学习资源
- 【算法】反转字符串
- 如何查看SCI期刊影响因子
- 追踪递归函数
- 线段树(区间修改)
- Java入门与环境搭建