トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ABC-044-B 美しい文字列

■■■問題■■■

wを、英小文字のみからなる文字列とします。
wが以下の条件を満たすならば、wを美しい文字列と呼ぶことにします。

●どの英小文字も、w中に偶数回出現する。

文字列wが与えられます。wが美しい文字列かどうか判定してください。

■■■入力■■■

w

●1 <= |w| <= 100
●wは英小文字('a'-'z')のみからなる文字列である

■■■出力■■■

wが美しい文字列ならばYesを、それ以外の場合はNoを出力せよ。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("abaccaba");
            //Yes
            //aが4回、bが2回、cが2回、それ以外の英小文字が0回出現します。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("hthth");
            //No
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        string w = InputList[0];

        var CntDict = new Dictionary<char, int>();
        foreach (char EachChar in w) {
            if (CntDict.ContainsKey(EachChar)) {
                CntDict[EachChar]++;
            }
            else CntDict[EachChar] = 1;
        }
        if (CntDict.All(X => X.Value % 2 == 0)) {
            Console.WriteLine("Yes");
        }
        else Console.WriteLine("No");
    }
}


解説

Dictionary<char, int>で、文字ごとの出現数を管理してます。