数据结构-模式匹配串算法(KMP)

原创 2017年01月02日 21:54:40
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>

using namespace std;

void getnext(char *t, int *next, int lent)
{
    int i = 0, j = -1;
    next[0] = -1;
    while (i < lent)
        if (j == -1 || t[i] == t[j])
            ++i, ++j, next[i] = j;
        else
            j = next[j];
}

int kmp(char *s, char *t, int *next, int lens, int lent)
{

    int i = 0, j = 0;
    while (i < lens)
    {
        if (-1 == j || s[i] == t[j])
            i++, j++;
        else
            j = next[j];
        if (j == lent) return 1;
    }
    return 0;
}



int main()
{
    char t[100],s[1000];
    int next[100];
    printf("Enter模式串,主串\n");
    scanf("%s",t);
    gets(s);
    int lent = strlen(t);
    int lens = strlen(s);
    getnext(t, next, lent);
    printf("%d\n1表示成功", kmp(s, t, next, lens, lent));
    return 0;
}

版权声明:Honor is in the heart.

相关文章推荐

【数据结构】 串的模式匹配算法KMP

/* ========================================================================================== 串...

数据结构例程——串的模式匹配(KMP算法)

问题:串的模式匹配 KMP算法:#include #include "sqString.h" void GetNext(SqString t,int next[]) /*由模式串t求出next值...

数据结构_串_串的模式匹配_KMP算法_C++实现

"head.h" #include #include using namespace std; class STRING { public: void GetString(); v...

《数据结构》严蔚敏版(java解)——第四章 串01 串的模式匹配KMP算法

概念:KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n)。 特点:相比一般简单的字...

Java数据结构-串及其应用-KMP模式匹配算法

串(string)是由零个或多个宇符组成的有限序列,又名叫字符串。定义的解释:   串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。   零个字符的串称为空串(null...

数据结构之串的KMP模式匹配算法的实现

/*************************串--KMP模式匹配算法*************************/ #include"stdio.h" #include"string.h...

数据结构(11)--串的模式匹配算法之BF、KMP算法

参考书籍:数据结构(C语言版)严蔚敏吴伟民编著清华大学出版社 1.串的存储 1.1定长顺序存储 串的定长顺序存储(静态数组):     #define  MAXSTRLEN  255  // 用户...

数据结构- 串的模式匹配算法:BF和 KMP算法

Brute-Force算法的思想 1.BF(Brute-Force)算法   Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较...
  • hguisu
  • hguisu
  • 2012-06-20 10:57
  • 21348

数据结构- 串的模式匹配算法:BF和 KMP算法

Brute-Force算法的思想 1.BF(Brute-Force)算法   Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)