公式

A - ab 解説 by Nyaan


初心者の方へ
  • プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは practice contest の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
  • また、プログラミングコンテストの問題に慣れていない方は、 AtCoder Beginners Selection の問題をいくつか試すことをおすすめします。
  • C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。

この問題では次の条件を満たす整数 \(i\) が存在するかどうかを聞かれていることが分かります。

  • \(1 \leq i \leq N - 1\)
  • \(S\)\(i\) 文字目と \(i+1\) 文字目はそれぞれ a, b または b, a

よって、\(S\) を入力から受け取った後、for 文などの繰り返し文で \(i\)\(1, 2, \dots, N-1\) まで走査して、条件を満たす \(i\) が存在するかを調べていけばよいです。

C++ による実装例は次の通りです。(実装例を読む際、文字列型の先頭の文字が S[0] で始まる影響で \(i\) の値が \(1\) ずれているのに注意してください。)

#include <iostream>
#include <string>
using namespace std;

int main() {
  int N;
  string S;
  cin >> N >> S;
  bool yes = false;
  for (int i = 0; i < N - 1; i++) {
    if (S[i] == 'a' and S[i + 1] == 'b') yes = true;
    if (S[i] == 'b' and S[i + 1] == 'a') yes = true;
  }
  cout << (yes ? "Yes" : "No") << endl;
}

投稿日時:
最終更新: