AcWing 776. 字符串移位包含问题
原题链接
困难
作者:
努力学算法的小王
,
2024-01-22 16:52:18
,
所有人可见
,
阅读 35
巧用strncat
- 追加和strstr
- 子串查找
思路:将a串后追加a串(自己追加自己), 然后从a串中查找是否有b这个子串即可
cpp代码
#include <iostream>
#include <cstring>
using namespace std;
char a[31];
int main()
{
string x, b;
cin >> x >> b;
// 判断长度。保证strstr的第一个参数最长
if (x.size() < b.size())
{
swap(x, b);
}
// 将最长的字符转化为char
// 因为strcat的第一个参数是char*
// 注意不要使用c_str,因为它的返回类型是const char*
for (int i = 0; i < x.size(); i++)
{
a[i] = x[i];
}
// char * strncat ( char * destination, const char * source, size_t num );
// strncat(str, "字符串", 个数) - 默认在字符串末尾添加字符串
strncat(a, a, strlen(a)); // 自己添加自己
// strstr(str1, str2) // 查看str2是否在str1里
if (strstr(a, b.c_str()) != NULL)
{
puts("true");
}
else
{
puts("false");
}
return 0;
}