Kazun の競プロ記録

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

AtCoder Beginner Contest 249 B問題 Perfect String

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

英大文字, 英小文字からなる文字列  S がある.  S は以下の3個の条件を全て満たすか?

  •  S の中に英大文字が存在する.
  •  S の中に英小文字が存在する.
  •  S に現れる文字はすべて異なる.

制約

  •  S は英大文字, 英小文字からなる文字列
  •  1 \leq |S| \leq 100

解法

1つ目と2つ目の条件については  {\tt for} 文を利用して, 各文字が大文字か小文字かをみればよい. 例えば, 文字  s が大文字かどうかの判定は,  t の ASCII コードを返す関数を  {\rm ASCII}(t) と書くとき,  {\rm ASCII}({\tt a}) \leq {\rm ASCII}(s) \leq {\rm ASCII}({\tt z}) によって判定できる. 小文字についても同様である.

3つ目の条件については以下のようにして判定できる.

  •  S にある全ての文字  s について, 以下が整理する:  S の中にある  s の数はちょうど  1 である.
  •  S にある文字全体の集合を  T としたとき,  T の濃度 (元の個数) は  S の長さと一致する.

これらの判定を全て通れば肯定的, 1つでも通らなければ否定的である.