class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> result = new ArrayList<List<String>>();
List<Set<Character>> possibilities = new ArrayList<Set<Character>>();
Map<Set<Character>, String> m = new HashMap<Set<Character>, String>();
for (String s : strs) {
Set<Character> possible = new HashSet<Character>();
for (int i = 0; i < s.length(); i++) {
possible.add(s.charAt(i));
}
if (! m.containsKey(possible)) {
m.put(possible, s);
} else {
}
}
}
}
for loop 3개....쓰려다가 말고 답지 봤읍니다 ㅠ
public List<List<String>> groupAnagrams(String[] strs) {
if (strs == null || strs.length == 0) return new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();
for (String s : strs) {
char[] ca = new char[26];
for (char c : s.toCharArray()) ca[c - 'a']++;
String keyStr = String.valueOf(ca);
if (!map.containsKey(keyStr)) map.put(keyStr, new ArrayList<>());
map.get(keyStr).add(s);
}
return new ArrayList<>(map.values());
}
숫자를 사용하는 clever방식...
배우겠읍니다
Runtime: 5 ms, faster than 98.83% of Java online submissions for Group Anagrams.
Memory Usage: 42.8 MB, less than 31.58% of Java online submissions for Group Anagrams.