概要
英小文字からなる二つの文字列 init と goal が与えられる。
init は 'z' 以外の文字から構成される。
init に 'z' を任意の場所に挿入する操作が任意回可能なとき、init を goal に変形できるかどうか判定せよ。
解法
goal から 'z' を除いたものが init と一致すれば、適当な場所に 'z' を挿入することで goal を作ることができます。
コード
#define ALL( c ) (c).begin(), (c).end() class InsertZ { public: string canTransform( string init, string goal ) { string nonZ; copy_if( ALL( goal ), back_inserter( nonZ ), bind1st( not_equal_to<char>(), 'z' ) ); return init == nonZ ? "Yes" : "No"; } };