Link
解题思路
把每一种移位做出来,再find一下就好了
关于 string 类型的Something
- string 类型的定义和初始化
string str1;
// 定义一个字符串str1
,初始化为空string str2(str1);
// 用str1
初始化str2
string str3("emmmm");
//str3
初始化值为“emmmm”
string str4(n, ‘h’);
//str4
初始化值为n
个‘h’
- string 类型不以
'\0
结尾
- string 类型的输入
cin>>字符串变量;
注意:cin输入时,空格和换行符被认为是字符串的结束getline(cin, 字符串变量);
注意:getline输入时,字符串包含空格,换行符被认为时字符串的结束
- string 类型的常用操作
s.empty()
// 若s
为空,则返回true,否则返回falses.size()
// 返回s
中的字符个数s.insert(pos, s2)
// 在s
下标为pos
的元素前插入 string 类型s2
s.substr(pos, n)
// 返回从s
下标pos
起的n
个字符,类型为 strings.erase(pos, n)
// 删除s
下标pos
起的n
个字符s.replace(pos, n, s2)
// 将s
下标pos
起的n
个字符替换为s2
的内容s.find(s2, pos)
// 在s
下标pos
起查找s2
第一次出现的位置s1.compare(s2)
//s1
==s2
时返回0;s1
<s2
时返回值小于0;s1
>s2
时返回值大于0。
(此处的逻辑比较都是比较字典序)
Code
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string a, b;
int main() {
cin >> a >> b;
for (int i = 0; i < a.size(); i++) {
char c = a[0]; //取出第一个字符
a = a.substr(1, a.size() - 1); //从第二个字符开始复制,也等于a.erase(0,1)
a = a + c; //把第一个字符放在后面——移位
if (a.find(b, 0) != string::npos) {
//如果find不到返回string::npos
printf("true");
return 0;
}
}
printf("false");
}