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)
There is no in-browser runner. This is the file from the curriculum, unchanged.
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}