打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
kmp算法代码示例

//kmp_algorithm.c
#include "kmp_algorithm.h"


// ?ónextoˉêy?μ
void get_next(char T[], int strLen, int next[])
{
    int i = 1, j = 0;

    next[1] = 0;
    j = 0;
    while(i <= strLen)
    {
        if(0 == j || T[i] == T[j])
        {
            ++i;
            ++j;
            next[i] = j;
        }
        else
        {
            j = next[j];
        }
    }
}

/*
à?ó??£ê?′?Tμ?nextoˉêy?óT?ú?÷′?S?Dμúpos??×?·???oóμ?????μ?KMP??·¨
D£?1 <= pos <= strlen(S)
*/
// ·μ??T?úS?Dμ??eê?????
int KMP_algorithm(char S[], int S_len, char T[], int T_len, int pos)
{
    int i = pos;
    int j = 1;
    int next[MAX_NEXT];

    get_next(T, T_len, next);
    while(i < S_len && j < T_len)
    {
        if(0 == j || S[i] == T[j])
        {            
            ++i;
            ++j;
        }
        else
        {           
            j = next[j];
        }
    }    
    return (i - j);
}

========================================================================

// kmp_algorithm.h
#ifndef _KMP_ALGORITHM_H_
#define _KMP_ALGORITHM_H_


#include <stdio.h>

#define MAX_NEXT 1024*1024

/*
    ′?μ??£ê??¥??£??óμúò???×?·?′??úμú?t??×?·?′??Dμ?????
*/
int KMP_algorithm(char S[], int S_len, char T[], int T_len, int pos);

#endif

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
字符串快速搜索 KMP算法 + 简要说明(C语言)
strstr实现
kmp算法(算法是转的) 代码
KMP算法入门题集
请用代码写一个算法测试回环字符串函数
KMP算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服