Leetcode/NeetCode
[ArraysHashing][Medium] 49. Group Anagrams
자전거통학
2024. 7. 7. 22:54
https://leetcode.com/problems/group-anagrams/description/
문장들의 배열이 주어질 때, anagram이 같은 것들끼리 묶어서 출력하라.
우선 이 문제를 풀때는 frequency buff를 사용한다는 생각에 미치는 것이 일반적이다.
하지만 조금 더 최적화를 위해서를 입력된 문자를 정렬하면 anagram이 같은 문자는 같은 문자로 정리된다는 생각에 까지 이르러야 한다.
코드
더보기
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
map<string, vector<int>> mBuff;
for (auto k = 0; k < strs.size(); ++k)
{
string cur = strs[k];
sort(cur.begin(), cur.end());
if (mBuff.find(cur) == mBuff.end())
mBuff[cur] = vector<int>{ k };
else
mBuff[cur].push_back(k);
}
vector<vector<string>> vRet;
for (auto iter = mBuff.begin(); iter != mBuff.end(); ++iter)
{
auto vIdx = iter->second;
vector<string> vStr;
for (auto j = 0; j < vIdx.size(); ++j)
vStr.push_back(strs[vIdx[j]]);
vRet.push_back(vStr);
}
return vRet;
}
결과