模拟
时间复杂度:$O(m^2)$, m为max(a.size(),b.size())
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a,b,t;
bool ok;
cin>>a>>b;
if(a.size()<b.size()) t=a,a=b,b=t;
for(int i=0;i<a.size();i++)
{
string tran="";
//构造移位字符串
for(int j=i;j<a.size();j++) tran+=a[j];
for(int j=0;j<i;j++) tran+=a[j];
int t=0,size=0;
ok=false;
for(int i=0;i<tran.size();i++)
{
if(t<b.size() && tran[i]==b[t]) size++,t++;
else if(t<b.size() && tran[i]!=b[t]) size=0,t=0,ok=false;
if(size==b.size()){
ok=true;
break;
}
}
if(ok) {
cout<<"true";
break;
}
}
if(!ok) cout<<"false";
return 0;
}