男篮世界杯赔率kmp算法查找字符串
分类:计算机教程

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void get_nextval(char* str,int* T,int n)
{
    int i=1,j=0;
    T[0]=0;
    T[1]=0;
    while(i < n)
    {
        if(j == 0 || str[i] == str[j])
        {
            i  ,j  ;
            if(str[i] != str[j])
                T[i] = j;
            else
                T[i] = T[j];
        }
        else
            j = T[j];
    }

}

int Index_kmp(char *str,char* pattern,int pos)
{
    int i = pos;
    int j = 0;
    int len_str = strlen(str);
    int len_pattern = strlen(pattern);
    int *next = (int *)malloc(sizeof(int) * len_pattern);
    get_nextval(pattern,next,len_pattern - 1);

    while(i < len_str && j < len_pattern)
    {
        if(j == 0 || str[i] == pattern[j])
        {
            if(str[i] == pattern[j])
            {
                i  ;
                j  ;
            }
            else if(j == 0)
                i  ;
        }
        else j = next[j];
    }
    if(j >= len_pattern)
        return i - len_pattern;
    else
        return -1;
}

int main(int argc,char* argv[])
{
    //char *p = "aaaab";
    int next[256];
    char str[256];
    char pattern[256];
    printf("please input the string\n");
    scanf("%s",str);
    printf("please input the pattern\n");
    scanf("%s",pattern);
    /*int n = strlen(str);
    get_nextval(str,next,n-1);
    int i;
    for(i=0;i < n;i  )
    {
        printf("%d  ",next[i]);

    }

    printf("\n");*/
    int pos = Index_kmp(str,pattern,0);
    printf("pos = %d\n",pos);

}
//该片段来自于http://outofmemory.cn

本文由美洲杯赔率发布于计算机教程,转载请注明出处:男篮世界杯赔率kmp算法查找字符串

上一篇:C 随机生成整数测试磁盘文件排序 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • js出生日期 年月日级联菜单示例代码
    js出生日期 年月日级联菜单示例代码
    现在世界通用的公历(阳历)也经过一个长期演变的过程。我们先看,公历每个月的日数是固定的:"七前单大,八后双大"。也就是说,一、三、五、七、
  • php.ini 中文版
    php.ini 中文版
    ; 错误报告是按位的。或者将数字加起来得到想要的错误报告等级。 ; E_ALL - 所有的错误和警告 ; E_ERROR - 致命性运行时错 ; E_WARNING - 运行时警告(非致命性
  • PHP编码转换男篮世界杯赔率
    PHP编码转换男篮世界杯赔率
    SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS','CodePage') 男篮世界杯赔率,返回为936,即GBK编码。 936 简体中文GBK 950 繁体中文BIG5 437 美国/加拿大英语 932 日文
  • 用php随机生成福彩双色球号码的2种方法
    用php随机生成福彩双色球号码的2种方法
    不瞒您说,俺也是个双色球爱好者,经常买,但迟迟没有中过一等奖,哈哈。 这里为大家介绍用php随机生成福彩双色球号码的二种方法,供朋友们学习参考
  • JavaScript制作简易计算器(不用eval)
    JavaScript制作简易计算器(不用eval)
    本文实例为大家分享了js制作简易计算器的具体代码,供大家参考,具体内容如下 本文实例为大家分享了js简易计算器的具体代码,供大家参考,具体内容