博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KMP算法
阅读量:3951 次
发布时间:2019-05-24

本文共 727 字,大约阅读时间需要 2 分钟。

前言

虽然之前有用过,但是只是知道原理,求next数组的部分有点模糊。本篇详讲。

我的理解

说白了,KMP就是从暴力解法开始的。

#include
//暴力解法#include
#include
using namespace std;int main(){
char a[100],b[100]; cin>>a>>b; int i=0,j=0,blen=strlen(b),alen=strlen(a); while(1){
if(i==alen){
cout<<-1<

显然,我们在匹配失败的那个位置之前的主串已经都匹配过了,已经与模式串建立联系了,我们只用把模式串的前后缀建立联系就行了。

#include
#include
#include
using namespace std;int next[100];char b[100];void getnext(int len){
int j=0,k=-1; next[0]=-1; while(j
>a>>b; int i=0,j=0,blen=strlen(b),alen=strlen(a); getnext(blen); while(1){
//与暴力解法相类 if(i==alen){
cout<<-1<

转载地址:http://iwuzi.baihongyu.com/

你可能感兴趣的文章
解决Springboot2中无法访问在static/image/中的静态图片!终于解决啦
查看>>
牛客网华为机试——合并表记录
查看>>
算数基本定理
查看>>
Sliding Window(POJ-2823)
查看>>
A. Greed CodeForces - 892A
查看>>
最短路 HDU - 2544
查看>>
7-12 列车厢调度(25 分)
查看>>
一个人的旅行 HDU - 2066
查看>>
Reward HDU - 2647 (拓扑排序)
查看>>
最长子序列长度 (动态规划 O(N^2))
查看>>
最长子序列长度 (贪心+二分 O( Nlog(N) ))
查看>>
数塔 HDU - 2084 (简单的dp)
查看>>
超级楼梯 HDU - 2041 ( 简单的dp )
查看>>
Piggy-Bank HDU - 1114 ( 完全背包 )
查看>>
Knapsack problem FZU - 2214 ( 01背包 )
查看>>
瞌睡 (网易笔试题)
查看>>
1009 说反话 (20 分)
查看>>
1010 一元多项式求导 (25 分)
查看>>
1011 A+B 和 C (15 分)
查看>>
1012 数字分类 (20 分)
查看>>