👀 문제
https://leetcode.com/problems/group-anagrams/submissions/
👊 도전
1. 설계
- str를 오름차순으로 만들고, 해시맵에 넣어 같은 문자열이면 value에 넣는다.
2. 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
*
* @author HEESOO
*
*/
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs.length==0) return new ArrayList();
HashMap<String, List> map=new HashMap<>();
for(String str:strs){
char[] array=str.toCharArray(); // 배열로 만들어서 오름차순 정렬하기 위함
Arrays.sort(array);
String key=String.valueOf(array); // 배열을 String으로 변환
if(!map.containsKey(key)) map.put(key, new ArrayList()); // 새로운 key면 리스트 생성
map.get(key).add(str); // 해당 리스트에 str 추가
}
return new ArrayList(map.values());
}
}
3. 결과
🤟 성공 🤟
4. 설명
- str를 오름차순 정렬한다
- str를 오름차순 정렬하기 위해서는 Arrays.sort()를 쓰기 위해 배열로 만들어야 한다.
- String[]형으로 만들 경우, 다시 String으로 변환하기 위해 for문을 써야하므로, char[]로 배열을 만들고 String.valueOf()로 String으로 다시 변환한다.
- 해시맵의 해당 key에 삽입한다
- 오름차순으로 만든 key가 map에 없다면, 새 리스트를 하나 만든다.
- map.get(key)로 value인 ArrayList를 가져오고, 거기에 add로 str를 넣는다.