【ybtoj】【字串】【例題2】移位包含
阿新 • • 發佈:2021-01-24
【例題2】移位包含
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");
}