zoukankan      html  css  js  c++  java
  • HDOJ_2203亲和串

    亲和串

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 5595    Accepted Submission(s): 2523


    Problem Description
    人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。
    亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。
     

    Input
    本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于100000。
     

    Output
    如果s2是s1的亲和串,则输出"yes",反之,输出"no"。每组测试的输出占一行。
     

    Sample Input
    AABCD CDAA ASD ASDF
     

    Sample Output
    yes no

    #include<iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    using namespace std;
    #pragma warning(disable : 4996)
    const int MAXN = 200005;
    int Next[MAXN];
    char text[MAXN], pat[MAXN];
    
    void get_next()
    {
    	int length, i = 0, j = -1;
    	Next[0] = -1;
    	length = strlen(pat);
    	while(i < length)
    	{
    		if(j == -1 || pat[i] == pat[j])
    		{
    			i++;
    			j++;
    			Next[i] = j;
    		}
    		else
    		{
    			j = Next[j];
    		}
    	}
    }
    bool kmp()
    {
    	get_next();
    	int lent = strlen(text);
    	int lenp = strlen(pat);
    	int i = 0, j = 0;
    	while(i < lent && j < lenp)
    	{
    		if(j == -1 || text[i] == pat[j])
    		{
    			i++;
    			j++;
    		}
    		else
    		{
    			j = Next[j];
    		}
    	}
    	if(j >= lenp)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
    
    int main()
    {
    	int len_t, len_p, i, t;
    	while(scanf("%s%s", text, pat) != EOF)
    	{
    		len_t = strlen(text);
    		len_p = strlen(pat);
    		if(len_p > len_t)
    		{
    			printf("no\n");
    		}
    		else
    		{
    			i = 0;
    			t = len_t;
    			while (i < len_t)
    			{
    				text[t++] = text[i++];
    			}
    			text[t] = '\0';
    			if(kmp())
    			{
    				printf("yes\n");
    			}
    			else
    			{
    				printf("no\n");
    			}
    		}
    	}
    	return 0;
    }
    


  • 相关阅读:
    开发PHP扩展(一)
    ssh 使用技巧
    安装scribe
    PHP扩展中定义一个类
    PHP扩展的加载流程
    PHP扩展中访问全局变量$_POST,$_GET,$_SERVER等
    PHP的HashTable(一)
    PHP的HashTable(二)
    MVC ScriptBundle自定义排序。
    解决bootstrap和easyUI部分css类冲突问题。
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835021.html
Copyright © 2011-2022 走看看