AT4171 [ABC103B] String Rotatio
思路
这道题可以模拟来解决。
应判断以下三点:
-
如果两个字符串相等输出
Yes
。 -
如果两个字符串长度不相等输出
No
。 -
否则进行模拟。
-
如果两个字符串在模拟了一遍后还是不相等就输出
No
。 -
否则输出
Yes
。
-
代码
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
string s1,s2;
int len1,len2;
void mn()
{
string s3=s1;
for(int i=0;i<len1-1;++i)
s1[i]=s3[i+1];
s1[len1-1]=s3[0];
}//模拟
int main()
{
cin>>s1>>s2;
len1=s1.size(),len2=s2.size();
if(s1==s2) cout<<"Yes"<<endl;
else if(len1!=len2) cout<<"No"<<endl;
else
{
int t=0;
bool f=0;
while(s1!=s2)
{
if(t==len1) {cout<<"No"<<endl;f=1;break;}//如果循环完一遍还不相等就输出No
t++;
mn();
}
if(!f) cout<<"Yes"<<endl;
}
return 0;
}