49. Group Anagrams

JJ·2020년 12월 25일
0

Algorithms

목록 보기
31/114
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.

0개의 댓글