Alex@NBUT
将原字符串m重复两次 在新的字符串中查找是否有n 就像一串珠子 与边上的珠子都相对确定
#include<iostream> #include<cstring> #include<string> #include<sstream> #include<algorithm> using namespace std; int main() { string n,m,nn,mm; long long a,b,i,k; cin>>a; while(a--) { cin>>n>>m; k=5; if(n.size()!=m.size()) { k=0; } nn=n+n; mm=m+m; if((nn.find(m)!=string::npos||mm.find(n)!=string::npos)&&k) cout<<"Yes"<<endl; else cout<<"No"<<endl; mm=""; nn=""; } return 0; } /*kmp #include<iostream> #include<string> #include<cstring> using namespace std; int nexta[1000100]; void getnext(string n) { int i=0,j=-1; nexta[0]=-1; while(i<n.size()) { if(j==-1||n[i]==n[j]) { ++i; ++j; nexta[i]=j; } else j=nexta[j]; } } long long kmp(string n,string m) { int i=0,j=0; while(i<n.size()) { if(j==-1||n[i]==m[j]) { ++i; ++j; } else j=nexta[j]; if(j==m.size()) { return 3; } } return 0; } int main() { string n,m,nn,mm; long long a,b,c,i,d,k; cin>>a; while(a--) { memset(nexta,0,sizeof(nexta)); k=5; cin>>n>>m; nn=n+n; if(n.size()!=m.size()) { k=0; } getnext(m); if(kmp(nn,m)&&k) { cout<<"Yes"<<endl; } else cout<<"No"<<endl; } return 0; } */