(ハッシュ)leetcode 49.グループアナグラム

思考:ハッシュテーブル、実施マップ、(キー、値)=(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; 
    } 
}。

 

おすすめ

転載: www.cnblogs.com/Bella2017/p/11260514.html