【leetcode】Anagrams


class Solution {
public:
       
       string sortedString(string &str){
           int count[26];
           string sortedStr = "";
           for(int i = 0; i < 26; i++){
               count[i] = 0;
           }
           for(int i= 0; i < str.size(); i++){
               count[str[i] - 'a']++;
           }
           for(int i = 0; i < 26; i++){
               for(int j = 0; j < count[i]; j++ ){
                   sortedStr = sortedStr + (char)('a' + i);
               }
           }
          return sortedStr; 
       }
       
    vector anagrams(vector& strs) {
        unordered_map map;
        for(int i = 0; i < strs.size(); i++){
            string str = sortedString(strs[i]);
            if(map.find(str) == map.end()){
                map[str] = 1;
            }else{
                map[str]++;
            }
        }
        vector anagrams;
        for(int i = 0; i < strs.size(); i++){
            string str = sortedString(strs[i]);
            if(map.find(str) == map.end()){
                continue;
            }else{
                if(map[str] > 1){
                    anagrams.push_back(strs[i]);
                }
            }
        }
        return anagrams;
    }
};

以上はACコード
主な考え方は
まず文字列配列の各文字列を並べ替えます
そしてhashで各ソート後の文字列キー値をマッピングに対応させる
文字列が1回しか現れない場合は出力しません
1回以上発生した場合は結果を出力