思考:ハッシュテーブル、実施マップ、(キー、値)=(STRS [i]は、インデックス)。
辞書式順序の文字列の後に、対応する文字列がマップに見つかった場合、対応する値は、+ 1 [「食べた」など、「、(ワードに格納された値は、出力インデックスの同型集合です)茶 "" 食べる "]インデックス0に対応する; [" "たん" NAT]インデックス1に対応し...
クラスのソリューション{ パブリック: ベクトル <ベクトル< 文字列 >> groupAnagrams(ベクトル< 文字列 >&STRS){ // ハッシュ ベクトル<ベクトル< 文字列 >> 結果。 マップ < 文字列、int型 > インデックス。 int型 CNT = 0 ; // 记录アナグラム个数 ため(int型 I = 0 ; iが(strs.sizeを<); ++ I){ 文字列 TMP = STRS [I]。 ソート(tmp.begin()、tmp.end()); // プレス辞書式順序 IF(index.find(TMP)== index.end()){ // マップのTMPで発見されていない 索引[TMP] = CNT; CNT ++ ; ベクター < ストリング > tmpStr; tmpStrを。一back(STRの[I]); result.push_back(tmpStr); } そうでなければ 結果[索引[TMP]一back(STRの[I]);. } 戻り結果; } }。
クラス解決{ パブリック: ベクトル <ベクトル< 文字列 >> groupAnagrams(ベクトル< 文字列 >とのSTR){ ベクトル <ベクトル< 文字列 >> RES; // 戻り値 unordered_map < 文字列、ベクトル< 文字列 >> M; // 文字列その均質な文字列間のマッピング のために(文字列STR:のSTR){ 文字列 T = STR; ソート(t.begin()、t.end()); M [T] .push_back(STR); } 用(:M自動A) res.push_back(a.second)。 リターンのres; } }。