HDU 2203 親和串 題解
阿新 • • 發佈:2018-12-16
由題意得:
1.輸入兩組字串,第一組為父串,第二組為子串
2..因為是父串迴圈移位,所以字串的不能出現類似第一位字元與第三位字元換位的情況
3.既然如此,那就再複製一份父串,添在原父串後面,使父串延長一倍。這樣,在新的父串裡面就會出現原父串迴圈移位出現的任何情況
4.如果子串在新父串中能找到首次出現的地址,就說明輸入的兩組字串是親和串;若找不到,就不是。當然如果,子串長度大於父串就肯定不是親和串
5.程式碼如下:
#include<iostream> #include<cstring> const int MAXN = 100000; char s1[MAXN+1],s2[MAXN],s3[2*MAXN+1]; using namespace std; int main() { char *p; while(cin>>s1>>s2) { if(strlen(s1)<strlen(s2)) cout << "no" << endl; else { strcpy(s3, s1); strcat(s3, s1); p = strstr(s3, s2); if(p) cout << "yes" << endl; else cout << "no" << endl; } } return 0; }