問題概要
文字列 S が与えられる。S を先頭から走査したとき、二回目以降に現れる文字を全て削除した文字列を求めよ。
解法
問題文に書かれたアルゴリズムをそのまま実装することで解くことができます。過去に出現した文字を set などで保持しておくと楽に書くことができます。
コード
#define FOR( e, c ) for ( auto &e : c ) #define EXIST( c, e ) ( (c).find( e ) != (c).end() ) class Unique { public: string removeDuplicates( string S ) { string res; set<char> cs; FOR( c, S ) { if ( !EXIST( cs, c ) ) { res += c; cs.insert( c ); } } return res; } };