zoukankan      html  css  js  c++  java
  • KMP字符串模式匹配算法

    原理就不说了,学算法的都知道这基本上是查找一个字符串是否在另一个串中位置比较快的算法。代码如下:
    [cpp]  
    #include <stdio.h>  
    #include <string.h>  
    #define MAXSIZE 100  
    int next[MAXSIZE];  
    int S_lenth,D_lenth;  
    char source[MAXSIZE],detination[100];  
    void get_next()  
    {  
        int i=1,j=0;  
        next[1]=0;  
        while(i<=D_lenth)  
        {  
            if(j==0||(detination[i-1]==detination[j-1]))  
            {  
                ++i;  
                ++j;  
                next[i]=j;  
            }  
            else  
            {  
                j=next[j];  
            }  
        }  
    }  
    int KMP()  
    {  
        int i=0,j=1;  
        while(i<=S_lenth&&j<=D_lenth)  
        {  
            if(j==0||(source[i]==detination[j-1]))  
            {  
                ++i;  
                ++j;  
            }  
            else  
            {  
                j = next[j];  
            }  
        }  
        if(j>D_lenth)  
        {  
            return i-D_lenth;  
        }  
        else  
            return 0;  
    }  
    int main()  
    {  
        int i=0;  
        printf("输入源串!!!\n");  
        scanf("%s",&source);  
        printf("输入模式串!!!\n");  
        scanf("%s",&detination);  
        S_lenth = strlen(source);  
        D_lenth = strlen(detination);  
        get_next();  
        printf("next数组元素为:\n");  
        for(i=1;i<=D_lenth;i++)  
        {  
            printf("%d ",next[i]);  
        }  
        printf("\n模式串开始于源串%d位置处",KMP());  
        return 0;  
    }  
  • 相关阅读:
    操作系统
    Typora
    C++
    linux sftp 和scp 运用
    python GIL锁与多cpu
    django model 高级进阶
    django template 模板
    django view 视图控制之数据返回的视图函数
    django 创建管理员用户
    jango 模型管理数据model入门
  • 原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589203.html
Copyright © 2011-2022 走看看