Skip to content

Commit 9f2af59

Browse files
solves group anagrams
1 parent b099583 commit 9f2af59

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
| 46 | [Permutations](https://leetcode.com/problems/permutations) | [![Java](assets/java.png)](src/Permutations.java) | |
5050
| 47 | [Permutations II](https://leetcode.com/problems/permutations-ii) | [![Java](assets/java.png)](src/PermutationsII.java) | |
5151
| 48 | [Rotate Image](https://leetcode.com/problems/rotate-image) | [![Java](assets/java.png)](src/RotateImage.java) | |
52+
| 49 | [Group Anagrams](https://leetcode.com/problems/group-anagrams) | [![Java](assets/java.png)](src/GroupAnagrams.java) | |
5253
| 53 | [Maximum SubArray](https://leetcode.com/problems/maximum-subarray) | [![Java](assets/java.png)](src/MaximumSubArray.java) [![Python](assets/python.png)](python/maximum_sum_subarray.py) | |
5354
| 55 | [Jump Game](https://leetcode.com/problems/jump-game) | [![Java](assets/java.png)](src/JumpGame.java) | |
5455
| 58 | [Length of Last Word](https://leetcode.com/problems/length-of-last-word) | [![Java](assets/java.png)](src/LengthOfLastWord.java) [![Python](assets/python.png)](python/length_of_last_word.py) | |

src/GroupAnagrams.java

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// https://leetcode.com/problems/group-anagrams
2+
// T: O(|words| * |words[i]|)
3+
// S: O(|words| * |words[i]|)
4+
5+
import java.util.ArrayList;
6+
import java.util.HashMap;
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
public class GroupAnagrams {
11+
public List<List<String>> groupAnagrams(String[] words) {
12+
final Map<String, List<String>> anagrams = new HashMap<>();
13+
for (String word : words) {
14+
final String signature = getSignature(word);
15+
if (anagrams.containsKey(signature)) {
16+
anagrams.get(signature).add(word);
17+
} else {
18+
List<String> list = new ArrayList<>();
19+
list.add(word);
20+
anagrams.put(signature, list);
21+
}
22+
}
23+
return new ArrayList<>(anagrams.values());
24+
}
25+
26+
private String getSignature(String string) {
27+
final char[] array = new char[26];
28+
for (int i = 0 ; i < string.length() ; i++) {
29+
array[string.charAt(i) - 'a']++;
30+
}
31+
return String.valueOf(array);
32+
}
33+
}

0 commit comments

Comments
 (0)