Approach

  • strs 벡터에 있는 문자열들을 정렬하여 v 벡터에 저장한다.
  • 애너그램인 단어들은 v 벡터에 정렬되어 같은 단어로 되어있을 것이다.
  • 정렬된 단어들을 map 자료구조를 통해 map변수에 key값으로 저장한다.
  • v는 strs와 동일한 크기에다가 애너그램들의 위치 역시 동일하다.
  • v와 strs의 인덱스를 통해 map 변수에 저장되어있는 key값에다가 저장한다. -> v 단어가 map의 key값과 동일하면 해당 v 인덱스를 strs 인덱스에 대입하여 strs에 있는 단어를 map의 key의 value로 저장한다.

Code

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<string> v;
        unordered_map<string, vector<string>> map;
        vector<vector<string>> v2;

        for(auto s : strs) 
        {
            sort(s.begin(), s.end());
            v.push_back(s);
        }

        for(int i = 0; i < v.size(); i++) 
        {
            map[v[i]].push_back(strs[i]); 
        }

        for(auto s : map)
        {
            v2.push_back(s.second);
        }

        return v2;
    }
};

Result

profile
누누의 잡다저장소

0개의 댓글