程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 2203 親和串(kmp)

HDU 2203 親和串(kmp)

編輯:C++入門知識

HDU 2203 親和串(kmp)


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

Author Eddy

就是把第一個串加倍後能不能包含第一個串


kmp模板


#include
#include
#include
#include
#include
#include
#include
#include

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
using namespace std;
#define N 200005

char a[N],b[N];
int next[N];

void getfail(char *b)
{
	int i,j;
	i=0,j=-1;
	next[0]=-1;

	int len=strlen(b);
	while(i





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved