File tree 1 file changed +41
-0
lines changed
hash_table/group_anagrams
1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ package hash_table .group_anagrams ;
2
+
3
+ import java .util .ArrayList ;
4
+ import java .util .HashMap ;
5
+ import java .util .List ;
6
+
7
+ /**
8
+ * @author Bota5ky
9
+ * @link <a href="https://leetcode.cn/problems/group-anagrams/">49. 字母异位词分组</a>
10
+ * @since 2023-11-03 18:56
11
+ */
12
+ class Solution {
13
+ public List <List <String >> groupAnagrams (String [] strs ) {
14
+ var map = new HashMap <String , ArrayList <String >>();
15
+ for (String str : strs ) {
16
+ var key = generateKey (str );
17
+ var list = map .getOrDefault (key , new ArrayList <>());
18
+ list .add (str );
19
+ map .put (key , list );
20
+ }
21
+ var res = new ArrayList <List <String >>();
22
+ map .forEach ((k ,v ) -> res .add (v ));
23
+ return res ;
24
+ }
25
+
26
+ private String generateKey (String str ) {
27
+ var chars = new int [26 ];
28
+ for (int i = 0 ; i < str .length (); i ++) {
29
+ chars [str .charAt (i ) - 'a' ]++;
30
+ }
31
+ var sb = new StringBuilder ();
32
+ for (int i = 0 ; i < chars .length ; i ++) {
33
+ int count = chars [i ];
34
+ if (count > 0 ) {
35
+ sb .append ('a' + i );
36
+ sb .append (count );
37
+ }
38
+ }
39
+ return sb .toString ();
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments