笔记:如果一个字符串b
是另个一字符串a
的子串,必然满足b.size() <= a.size()
,因此每次只需对较长的字符串移位得到a'
,然后判断b
是否为a'
的子串:
for(起点)
for(枚举对应位置)
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
if(a.size() < b.size()) swap(a, b);
for(int i = 0; i < a.size(); i++)
{
a = a.substr(1) + a[0];
for(int j = 0; j + b.size() <= a.size(); j++)
{
int k = 0;
for(; k < b.size(); k++)
if(a[j + k] != b[k])
break;
if(k == b.size())
{
puts("true");
return 0;
}
}
}
puts("false");
return 0;
}