頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

ABC103 B - String Rotation

問題はこちら atcoder.jp

方針

S の末尾を取得し,S の先頭に挿入→ S の末尾以外を S とする」という操作で,S「回転」させることができます。

S を回転させて得られる文字列は高々 |S| 種類なので,|S| 回の操作後までに T と一致するか調べればよいです。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    string s,t;
    cin>>s>>t;
 
    string first;
 
    bool possible=false;
 
    for(int i=0; i<s.size(); i++){
        first=s.substr(s.size()-1,1);
        s.insert(0,first);
        s=s.substr(0,s.size()-1);
        if(s==t){
            possible=true;
            break;
        }
    }
 
    cout<<(possible ? "Yes" : "No")<<endl;
}