for
文の練習問題!
問題概要
英小文字からなる長さ の文字列
が与えられる。
は偶数である。
が「同じ文字列を 2 回繰り返したもの」であるかどうかを判定せよ。
制約
考えたこと
文字列 を前後で半分に割ると
文字ずつになる。よって、次のことを満たすかどうかを判定すればよい。
の 0 文字目と、
文字目が一致するか
の 1 文字目と、
文字目が一致するか
の 2 文字目と、
文字目が一致するか
- ...
の
文字目と、
文字目が一致するか
for
文で実装できる。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; string S; cin >> N >> S; bool res = true; for (int i = 0; i < N/2; ++i) { if (S[i] != S[i+N/2]) res = false; } if (res) cout << "Yes" << endl; else cout << "No" << endl; }