ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

AOJ 2369 - CatChecker

問題
提出コード

解法

後ろから攻めていき、最後が空文字列になるかどうかで判定します。
猫の鳴き声をCATとすると、mCATeCATw
となっているはずなので、まず両端がそれぞれmおよびwになっているかどうか判定します。この時点で辻褄があっていなければ答えはウサギの鳴き声です。
次に、真ん中のeを特定するのですが、左右に存在するCATは、どちらもm、e、wの数が等しくなっているはずなので、前から探索していき、mewの数がすべて同じになったタイミングで左のCATが終了したと判定します。
そして、その次の文字がeであるかどうか判定します。ここでも、eでなければウサギの鳴き声で決定します。
これより右側は、最後の一文字を除いてCATの部分になります。
最後に、二つのCATができるはずなので、この二つについても上と同様の操作を再帰で行っていきます。
CATの部分が空文字列になれば、答えは猫の鳴き声にになります。