zoukankan      html  css  js  c++  java
  • hdu 2203

    Kmp初级应用,不解释

    说一下失配函数的求解,其中的j其实既维护了改进前的next,又维护了改进后的next

    //kmp
    #include <iostream>
    #include <cstdio>
    #include <string.h>
    using namespace std;
    const int maxn=2*100000+10;
    char s1[maxn],s2[maxn];
    int nextv[maxn];
    int len1,len2;
    void getNext()
    {
    	int i=0,j=-1;
    	nextv[0]=-1;
    	while(i<len2-1)
    	{
    		if(j==-1||s2[i]==s2[j])
    		{
    			i++;
    			j++;
    			if(s2[i]==s2[j]) nextv[i]=nextv[j];
    			else nextv[i]=j;
    		}
    		else j=nextv[j];
    	}
    }
    int main()
    {
    	while(gets(s1))
    	{
    		gets(s2);
    		int tem=0;
    		int i,j;
    		len1=strlen(s1);len2=strlen(s2);
    		for(i=0,j=len1;i<len1-1;i++,j++) s1[j]=s1[i];
    		len1=2*len1-1;
    		i=-1,j=-1;
    		getNext();
    		while(i<len1&&j<len2)
    		{
    			if(j==-1||s1[i]==s2[j])
    			{
    				i++;
    				j++;
    			}
    			else j=nextv[j];
    		}
    		if(j==len2) printf("yes\n");
    		else printf("no\n"); 
    	}
    	return 0;
    }


  • 相关阅读:
    java 键盘监听事件
    DOM扩展
    DOM
    CSS hack
    客户端检测
    BOM
    函数表达式
    面向对象的程序设计
    引用类型(下)
    引用类型(上)
  • 原文地址:https://www.cnblogs.com/lj030/p/3002266.html
Copyright © 2011-2022 走看看