字符串移位包含问题——暴力枚举,简单易懂
三层循环依次比对即可,也可以用strstr()和find(),但毕竟
是语法课还是手动枚举会比较好
#include<iostream>
using namespace std;
int main()
{
string s1, s2;
cin >> s1 >> s2;
if (s1.size() > s2.size()) swap(s1, s2); //保证s1是s2的子串(s1短)
for (int i = 0; i < s2.size(); i++) //枚举s2移位后可以得到的所有子串
{
s2 = s2.substr(1) + s2[0]; //移位
for (int j = 0; j + s1.size() <= s2.size(); j++) //枚举子串s1在s2中所有可能出现的位置
{
int k = 0;
while (s1[k] == s2[j + k] && k <s1.size()) k++; //依次判断s1和s2的该部分子串是否相等
if (k == s1.size())
{
cout << "true" << endl;
exit(0);
}
}
}
cout << "false" << endl;
return 0;
}