Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 276 A問題 Erase Subarrays

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

英小文字からなる文字列  S において,  S {\tt a} は存在するか? 存在するならば, 最後に現れるのは何文字目か?

(存在しない場合,  -1 と出力)

制約

  •  S は英小文字からなる長さ  1 以上  100 以下の文字列

解法

文字列  S の長さを  N として,

  •  S N 文字目が  {\tt a} ならば正解は  N である.
  •  S (N-1) 文字目が  {\tt a} ならば正解は  (N-1) である.
  •  \vdots
  •  S 1 文字目が  {\tt a} ならば正解は  1 である.
  • ここまでくれば  S {\tt a} は存在しない.

となる. これは for 文を用いることによって実装できる.

なお, 次のようにすると存在しない場合, 存在する場合をまとめて一つの命令で出力できる.

  •  X \gets -1
  •  i=1,2, \dots, N の順に以下を実行する.
    •  S i 文字目が  {\tt a} ならば,  X \gets i とする.
  •  X を出力する.