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;
    }
    


  • 相关阅读:
    HTTP content-type
    python3学习--安装OCR识别库tesserocr
    http post get 类库 httphelper
    MD5
    解决python3中cv2读取中文路径的问题
    web api获得Post数据为空的解决办法
    python3项目打包成exe可执行程序
    pip install 使用国内镜像
    win10家庭版组策略安装
    在国企的日子(第七章 转正)
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835021.html
Copyright © 2011-2022 走看看