hwooo
LeetCode (C/C++, Java) 49. Group Anagrams 본문
https://leetcode.com/problems/group-anagrams/

풀이
주어진 문자열을 알파벳 순으로 정렬한 후 이를 key로 가진 map을 하나 만든다.
문자열들을 순회하며 알파벳 순으로 정렬한 후, 해당 값과 같은 key가 있다면 해당 value에 값을 추가하고, 아니라면 map에 해당 쌍을 추가한다.
C/C++ 코드
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> sorted;
for (string& s : strs) {
string tmp = s;
sort(tmp.begin(), tmp.end());
sorted[tmp].push_back(s);
}
vector<vector<string>> ans;
for (auto iter = sorted.begin(); iter != sorted.end(); iter++)
ans.push_back(iter->second);
return ans;
}
};
Java 코드
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] arr = str.toCharArray();
Arrays.sort(arr);
String tmpStr = new String(arr);
if (map.containsKey(tmpStr))
map.get(tmpStr).add(str);
else
map.put(tmpStr, new ArrayList<>(Arrays.asList(str)));
}
return new ArrayList<>(map.values());
}
}
'Study > Algorithm' 카테고리의 다른 글
프로그래머스 (C/C++, Java) 150368 : 이모티콘 할인행사 (0) | 2025.01.02 |
---|---|
프로그래머스 (C/C++, Java) 43162 : 네트워크 (0) | 2024.12.30 |
프로그래머스 (C/C++, Java) 43164 : 여행경로 (0) | 2024.12.25 |
LeetCode (C/C++, Java) 48. Rotate Image (0) | 2024.12.24 |
LeetCode (C/C++, Java) 39. Combination Sum (0) | 2024.12.19 |