ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

AtCoder Beginner Contest 145 B - Echo

寝違えにより肩を痛めました、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc145/tasks/abc145_b)にて開催されました、AtCoder Beginner Contest 145 B問題「B - Echo」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

正整数 N 及び、長さ N の英小文字から成る文字列 S が与えられます。

この文字列が、ある文字列を二度繰り返したものであるかを判定してください。 則ち、文字列 T であって、 S= T + T となるものが存在するかを判定してください。

2.制約

  • 1 ≤ N ≤ 100
  • S は英小文字から成る
  • |S|=N

3.入力例

  • 入力
6
abcadc
  • 出力
No

4.初見の感想

  • そもそも成立するのは総文字数が偶数の時限定の話である

5.学びポイント

  • forループで一回でも反復ではないところを見つけたらFalseにするようにしてみました

6.コードと簡単な解説

using System;

class Program
{
    static void Main(string[] args)
    {
        int N = int.Parse(Console.ReadLine());
        string S = Console.ReadLine();
        if (N % 2 == 0)
        {
            bool iterationFlag = true;
            for(int i = 0; i < N / 2; i++)
            {
                if (S[i] != S[N / 2 + i]) iterationFlag = false;
            }
            if (iterationFlag == true) { Console.WriteLine("Yes"); }
            else { Console.WriteLine("No"); }
        }
        else
        {
            Console.WriteLine("No");
        }
    }
    
}

7.最後に

お体にはお気をつけて…