トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.69 文字を自由に並び替え
■■■問題■■■
同じ長さの文字列Aと文字列Bが与えられる。
文字列Aの順番を自由に並び替えることができる。
文字列Aと文字列Bを同じにできるか判定せよ。
■■■入力■■■
A
B
文字列Aと文字列Bは1文字以上10文字以内の文字列。
文字列Aの長さと文字列Bの長さはかならず同じ。
文字はすべて小文字のアルファベットaからzで構成される。
■■■出力■■■
可能ならYES、不可能ならNOを出力せよ。
改行を忘れずに。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("dog");
WillReturn.Add("god");
//YES
//dogのdとgを入れ替えればgodになる。
//よって、YESが答え。
}
else if (InputPattern == "Input2") {
WillReturn.Add("cat");
WillReturn.Add("tea");
//NO
//catをどのように並び替えてもteaにはならない。
//よって、NOが答え。
}
else if (InputPattern == "Input3") {
WillReturn.Add("silence");
WillReturn.Add("license");
//YES
}
else if (InputPattern == "Input4") {
WillReturn.Add("yukicoder");
WillReturn.Add("yukicoder");
//YES
//最初から一致している場合もあります
}
else if (InputPattern == "Input5") {
WillReturn.Add("hurjztkyua");
WillReturn.Add("urjukzthua");
//NO
//意味不明な文字列もでます
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string A = InputList[0];
string B = InputList[1];
IEnumerable<char> wkEnum1 = A.OrderBy(X => X);
IEnumerable<char> wkEnum2 = B.OrderBy(X => X);
Console.WriteLine(wkEnum1.SequenceEqual(wkEnum2) ? "YES" : "NO");
}
}
解説
ソートした列挙同士をSequenceEqualメソッドで比較してます。