AtCoder ABC 044 B – 美しい文字列 Python解説
美しい文字列
今回の問題。
w を、英小文字のみからなる文字列とします。 wが以下の条件を満たすならば、wを美しい文字列と呼ぶことにします。
どの英小文字も、w中に偶数回出現する。
文字列 wが与えられます。wが美しい文字列かどうか判定してください。
AtCoder株式会社 AtCoder Beginner Contest 044
文字数をカウントする方法を考えましょう。すぐに思い浮かぶのは連想配列ですかね。
w = input()
dic = {}
flag = True
# *1
for word in w:
if word in dic:
dic[word] += 1
else:
dic[word] = 1
# *2
for value in dic.values():
if value % 2 != 0:
flag = False
# *3
print("Yes" if flag else "No")
*1は入力された文字列を1つずつ取り出し、dicに格納しています。dicの中にすでに存在していればカウントを1つ増やし、存在していなければ1で初期化しています。
*2ではdicのバリューを取り出し、2で割り切れるかをチェックしています。割り切れない場合はflagをFalseにしています。
*3は三項演算子。
因みに別の解き方。
w = input()
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for letter in alphabet:
if w.count(letter) % 2 != 0:
print("No")
exit()
print("Yes")