B. 【例题2】移位包含
题目
题解
设长度长的一个字符串为
s
1
s1
s1,短的为
s
2
s2
s2。
枚举
s
1
s1
s1的移位,对于它的每一次移位,判断
s
2
s2
s2是否为其的子串。
代码
#include<iostream>
#include<cstring>
using namespace std;
string s1,s2;
int l1,l2;
int main()
{
cin>>s1>>s2;
l1=s1.size();
l2=s2.size();
if(l1<l2) swap(s1,s2);//长的为s1,短的为s2。
for(int i=1; i<l1; i++)
{
int k=0,t=0;
for(int j=0; j<l1; j++)//判断子串
{
if(s1[j]==s2[k])
{
t++;
k++;
if(t==l2) break;
}
else t=k=0;
}
if(t==l2)
{
cout<<"true";
return 0;
}
char a=s1[0];
s1+=a;
s1.erase(0,1);
//移位
}
cout<<"false";
}