zoukankan      html  css  js  c++  java
  • SDUTOJ 2772 KMP简单应用

    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    #define N 10000001
    using namespace std;
    char s[N],s1[N];
    int next[N];
    void getnext(char s1[])
    {
    	int j=-1,i=0,len;
    	next[0]=-1;
    	len=strlen(s1);
    	while(i<len)
    	{
    		if(j==-1||s1[i]==s1[j])
    		{
    			++i;
    			++j;
    			next[i]=j;
    		}
    		else
    			j=next[j];
    	}
    }
    int KMP(char s[],char s1[])
    {
        int len,len1,i=0,j=0;
    	len=strlen(s);
    	len1=strlen(s1);
    	while(i<len && j<len1)
    	{
    		if(j==-1||s[i]==s1[j])
    		{
    			++i;
    			++j;
    		}
    		else
    			j=next[j];
    	}
    	if(j>=len1)
    		return i-len1+1;
    	else
    		return -1;
    }
    int main()
    {
    	int m;
    	while(scanf("%s",s)!=EOF)//这里依照常理能够使用gets(s)!=NULL,可是在SDUTOJ上就是WR..所以仅仅能用scanf输入.
    	{
    		scanf("%s",s1);
    		getnext(s1);
    		m=KMP(s,s1);
    		cout<<m<<endl;
    	}
    	return 0;
    }
    
    
    

  • 相关阅读:
    DRF 版本和认证
    DRF 视图和路由
    DRF 序列化组件
    RESTful
    Vuex以及axios
    npm、webpack、vue-cli
    Vue 生命周期
    Vue Router
    Vue 组件
    Vue 快速入门
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6761140.html
Copyright © 2011-2022 走看看