AcWing 776. 字符串移位包含问题
原题链接
困难
作者:
_cc
,
2021-01-26 17:37:37
,
所有人可见
,
阅读 516
C++ 代码
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string s1,s2,t;
cin>>s1>>s2;
if(s1.size()<s2.size()){ //此判断把长度大的给s1
s1=s2;
t=s1;
s2=t;
}
int n=s1.size();
string str; //str字符串需要用来移位并重新给s1赋值,具体看下面的循环
int flag=0;//0代表false,所以先默认他是不成立的
for(int i=0;i<n;i++){ //字符串长的长度有多长就需要移位几次
str=s1.substr(1)+s1.substr(0,1); //这开始移位
s1=str; //移位后需要把新的字符串再次赋给s1,要不然后面就没有字符了,就会出错。
for(int i=0;i<=n-s2.size();i++){ //这需要判断 s1➖s2+1次
if(s1.substr(0,s2.size())==s2){ //如果成立,flag=1;
flag=1;
}
}
}
if(flag==1){ //这用来判断最终结果是否成立
printf("true");
}
else{
printf("false");
}
return 0;
}