小海儿~ 发表于 2014-12-14 00:53:24

看小甲鱼的kmp看了一晚上明白了不少但优化那里还是不太清楚

看小甲鱼的kmp看了一晚上明白了不少但优化#include<iostream>
#include<cstring>
using namespace std;
int get_next(string t,int next[])
{
        int i=1;
        int j=0;
        next=0;
       
        while(i<t)
        {
                if(j==0 || t==t)
                {
                        i++;
                        j++;
                        //next=j;       
                        if(t!=t)
                        {
                                next=j;
                        }       
                        else
                        {
                                next=next;
                        }
                }
                else
                {
                        j=next;
                }
        }
}

int index_kmp(string s,string t,int pos)
{
        int i=pos;
        int j=1;
        int next;       
        get_next(t,next);
       
        while(i<=s&&j<=t)
        {
                if(0==j || s==t)
                {
                        i++;
                        j++;
                }
                else
                {
                        j=next;
                }
        }
       
        if(j>t)
                return i-t;
        else
                return 0;
}

int main()
{
        char s=" sddsfdsfsfsfefe";
        char t=" fds";
       
        s=strlen(s)-1;
        t=strlen(t)-1;
       
        cout<<index_kmp(s,t,1);
        return 0;       
}

那里还是不太清楚 不能不把代码粘上来

页: [1]
查看完整版本: 看小甲鱼的kmp看了一晚上明白了不少但优化那里还是不太清楚