torus711 のアレ

主に競技プログラミングの問題について書きます.PC 以外だと数式が表示されないかもしれないです

TopCoder SRM 587, Division 2, Level 1 : insertZ

概要

英小文字からなる二つの文字列 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";
	}
};