AcWing 776. 字符串移位包含问题
原题链接
困难
作者:
逆时针
,
2020-08-10 15:41:56
,
所有人可见
,
阅读 365
C++ 代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 假设s1长度<=s2长度
// s1是s2循环位移后的子串 <==> s1是s2自我复制一遍后(loop_str)的子串
bool is_substr_after_shift(const string& s1, const string& s2) {
// 长字符串自我复制一遍
string loop_str = s2 + s2;
// i从0开始最多需要循环s2的长度次
for (int i = 0; i != s2.size(); ++i) {
if (loop_str.substr(i, s1.size()) == s1)
return true;
}
return false;
}
int main() {
string s1, s2;
cin >> s1 >> s2;
// 保证s1长度<=s2长度
if (s1.size() > s2.size())
swap(s1, s2);
bool res = is_substr_after_shift(s1, s2);
if (res)
cout << "true" << endl;
else
cout << "false" << endl;
return 0;
}