File tree 2 files changed +34
-0
lines changed
2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change 49
49
| 46 | [ Permutations] ( https://leetcode.com/problems/permutations ) | [ ![ Java] ( assets/java.png )] ( src/Permutations.java ) | |
50
50
| 47 | [ Permutations II] ( https://leetcode.com/problems/permutations-ii ) | [ ![ Java] ( assets/java.png )] ( src/PermutationsII.java ) | |
51
51
| 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 ) | |
52
53
| 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 ) | |
53
54
| 55 | [ Jump Game] ( https://leetcode.com/problems/jump-game ) | [ ![ Java] ( assets/java.png )] ( src/JumpGame.java ) | |
54
55
| 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 ) | |
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments