問題
リング上の文字列 s の任意の位置から、時計回りに連続した文字列で p が作れるか判定する。
使ったもの
std::basic_string::find
1:s2.find(p)
という形で、s が2つ連なった文字列に p が含まれているかどうかを判定した
std::string::npos
:- 上記関数で文字列が検索にヒットしなかった場合の戻り値 2。
コード
#include <iostream>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
string s,p,s2="";
cin >> s >> p;
s2 = s + s;
if (s2.find(p) == string::npos) cout << "No" << endl;
else cout << "Yes" << endl;
return 0;
}
感想
ITP1_8_Dの「言語解説」にはC言語の解説が書かれているが、C++についての情報が少なく少し不親切に感じた。
あとがき
Hugo 0.60 以降で「リンクを新しいタブで開く」方法 | mobiusone.org を参考にして、このブログ内のリンクを別タブで開けるようにした。 良質な情報シェアをありがとうございます。