File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+
3
+ input : array of strings
4
+ output : grouped anagrams
5
+
6
+ ex) eat ate tea > same group
7
+
8
+ solution 1) brute force
9
+ ds : hashmap
10
+ algo : sort
11
+ generate Key by sorting string O(nlogn)
12
+
13
+ save to hashmap
14
+
15
+ tc : O(m* nlogn) when m is length of array, n is max length of string
16
+ sc : O(m)
17
+
18
+ solutino 2) better?
19
+ cannot optimize m times read
20
+ how about generating key
21
+
22
+ sort = nlogn
23
+ read = n << use frequency
24
+ 26 * n
25
+ tc : O(m * (26 * n)) ~= O(mn)
26
+ sc : O(m * 26) ~= O(m)
27
+ */
28
+
29
+ class Solution {
30
+ public List <List <String >> groupAnagrams (String [] strs ) {
31
+ Map <String , List <String >> map = new HashMap <>();
32
+ int n = strs .length ;
33
+ for (String str : strs ) {
34
+ int l = str .length ();
35
+ char [] freq = new char [26 ];
36
+ for (int i = 0 ; i < l ; i ++) {
37
+ freq [str .charAt (i ) - 'a' ]++;
38
+ }
39
+ String key = new String (freq );
40
+ map .putIfAbsent (key , new ArrayList <>());
41
+ map .get (key ).add (str );
42
+ }
43
+ return List .copyOf (map .values ());
44
+ }
45
+ }
You can’t perform that action at this time.
0 commit comments