自分が書いたコード
using System;
class Program
{
public static void Main(string[] args)
{
string S = Console.ReadLine();
if (S.Replace("eraser", "").Replace("erase", "").Replace("dreamer", "").Replace("dream", "") == "")
{
Console.WriteLine("YES");
} else
{
Console.WriteLine("NO");
}
}
}
最初に書いたコードが以下で、
using System;
class Program
{
public static void Main(string[] args)
{
string S = Console.ReadLine();
if (S.Replace("dream", "").Replace("dreamer", "").Replace("erase", "").Replace("eraser", "") == "")
{
Console.WriteLine("YES");
} else
{
Console.WriteLine("NO");
}
}
}
なんて単純な問題なんだと思ったが、ハマってしまった。
例えば "dreameraser"
から"dream"
を空文字に置換すると "eraser"
がきれいに残ってうまくいく。
しかし、"erasereraser"
だと、"erase"
を空文字に置換して "reraser"
が残ることになってしまいうまくいかない。
置換していく順番が大事で、
eraser -> erase -> dreamer -> dream
の順番にしてやればよい。