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