Blind 75

Group Anagrams

Problem
LC 49
Category
String
File
blind75_LC49GroupAnagrams.java
Path
pkg5leetcode/blind75/blind75_LC49GroupAnagrams.java
Package
pkg5leetcode.blind75
Command
java pkg5leetcode/blind75/blind75_LC49GroupAnagrams.java
Lesson
Back to the chapter
Approach
HashMap keyed by sorted char signature.
Complexity
Time O(n k log k), Space O(nk)

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/blind75/blind75_LC49GroupAnagrams.java
1package pkg5leetcode.blind75;2 3/*4 * Group Anagrams | LC 495 * APPROACH: HashMap keyed by sorted char signature.6 * COMPLEXITY: Time O(n k log k), Space O(nk)7 */8import java.util.*;9 10public class blind75_LC49GroupAnagrams {11    static List<List<String>> groupAnagrams(String[] strs) {12        Map<String, List<String>> map = new HashMap<>();13        for (String s : strs) {14            char[] a = s.toCharArray();15            Arrays.sort(a);16            String key = new String(a);17            map.computeIfAbsent(key, k -> new ArrayList<>()).add(s);18        }19        return new ArrayList<>(map.values());20    }21 22    public static void main(String[] args) {23        List<List<String>> r = groupAnagrams(new String[]{"eat", "tea", "tan", "ate", "nat", "bat"});24        check(r.size() == 3, "size");25        check(r.stream().anyMatch(g -> g.size() == 3 && g.contains("eat")), "group");26        System.out.println("all tests passed");27    }28 29    static void check(boolean cond, String name) {30        if (!cond) throw new AssertionError("FAILED: " + name);31        System.out.println("  PASS " + name);32    }33}