zoukankan      html  css  js  c++  java
  • KMP

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    using namespace std;
    
    void GetNext(char *str,int next[])
    {
        int j,k;
        j=0;k=-1;next[0]=-1;
        while(str[j]!='')
        {
            if(k==-1 || str[j]==str[k])
            {
                j++;k++;
                next[j]=k;
            }
            else k=next[k];
        }
    }
    
    int KMPIndex(char *s,char *t)
    {
        int lent=strlen(t);
        int next[100],i=0,j=0,v;
        GetNext(t,next);
        while(s[i]!='' && t[j]!='')
        {
            if(j==-1 || s[i]==t[j])
            {
                i++;j++;
            }
            else j=next[j];
        }
        if(j>=lent) v=i-lent;
        else v=-1;
        return v;
    }
    
    int main()
    {
        char s[]="ababcabsds";
        char t[]="abcd";
        cout<<KMPIndex(s,t);
        return 0;
    }
    

      

  • 相关阅读:
    ICQ
    Create小程序
    LRU最近最少使用算法
    感知器
    聚类-K均值
    阈值分类法
    最邻近分类
    设计模式
    高级排序算法
    Socket编程
  • 原文地址:https://www.cnblogs.com/zsboy/p/3935711.html
Copyright © 2011-2022 走看看