【ybtoj】【字符串】【例题2】移位包含

【例题2】移位包含


Link

传送门
题目


解题思路

把每一种移位做出来,再find一下就好了

关于 string 类型的Something

  • string 类型的定义和初始化
    1. string str1; // 定义一个字符串 str1,初始化为空
    2. string str2(str1); //str1 初始化 str2
    3. string str3("emmmm"); // str3 初始化值为 “emmmm”
    4. string str4(n, ‘h’); // str4 初始化值为 n‘h’
    5. string 类型不以 '\0 结尾
  • string 类型的输入
    1. cin>>字符串变量;
      注意:cin输入时,空格和换行符被认为是字符串的结束
    2. getline(cin, 字符串变量);
      注意:getline输入时,字符串包含空格,换行符被认为时字符串的结束
  • string 类型的常用操作
    1. s.empty() //s 为空,则返回true,否则返回false
    2. s.size() // 返回 s 中的字符个数
    3. s.insert(pos, s2) //s 下标为 pos 的元素前插入 string 类型 s2
    4. s.substr(pos, n) // 返回从 s 下标 pos 起的 n 个字符,类型为 string
    5. s.erase(pos, n) // 删除 s 下标 pos 起的 n 个字符
    6. s.replace(pos, n, s2) //s 下标 pos 起的 n 个字符替换为 s2 的内容
    7. s.find(s2, pos) //s 下标 pos 起查找 s2 第一次出现的位置
    8. 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");
}

猜你喜欢

转载自blog.csdn.net/qq_39940018/article/details/113025673
今日推荐