トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
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>で、文字ごとの出現数を管理してます。