AtCoder ABC 044 B – 美しい文字列 Python解説

2021年11月21日

スポンサーリンク

美しい文字列

今回の問題。

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")