概要
二つの文字列が与えられる。
それぞれの文字列の空でないプレフィックスを s, t としたとき、s + t によって作られる文字列の総数を求めよ。
解法
実際に全通り生成して数を数えます。
部分文字列の取り出しには string::substr を使い、重複なく数える部分では set に入れて set::size をとると楽です。
コード
using namespace std; #define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i ) class TopFox { public: int possibleHandles( string familyName, string givenName ) { set<string> res; REP( i, 0, familyName.size() ) { REP( j, 0, givenName.size() ) { res.insert( familyName.substr( 0, i + 1 ) + givenName.substr( 0, j + 1 ) ); } } return res.size(); } }