@@ -20,33 +20,40 @@ public static void main(String[] args) {
2020 }
2121
2222 public List <List <String >> groupAnagrams (String [] strs ) {
23- if (strs == null || strs .length == 0 ) {
24- return new ArrayList <>();
23+ List <List <String >> ans = new ArrayList <>();
24+ Map <String , List <String >> map = new HashMap <>();
25+
26+ for (String s : strs ) {
27+ String key = format (s );
28+ if (!map .containsKey (key )) {
29+ map .put (key , new ArrayList <>());
30+ }
31+
32+ map .get (key ).add (s );
2533 }
26- Map <String , List <String >> memo = new HashMap <>();
2734
28- for (String str : strs ) {
29- char [] ca = new char [26 ];
30- for (char c : str .toCharArray ()) {
31- ca [c - 'a' ]++;
35+ for (Map .Entry <String , List <String >> entry : map .entrySet ()) {
36+ ans .add (entry .getValue ());
37+ }
3238
33- System . out . println ( ca [ c - 'a' ]) ;
34- }
39+ return ans ;
40+ }
3541
36- System .out .println (ca );
37- String key = String .valueOf (ca );
38- System .out .println (key );
39- if (memo .containsKey (key )) {
40- List <String > values = memo .get (key );
41- values .add (str );
42- } else {
43- List <String > valueList = new ArrayList <>();
44- valueList .add (str );
45- memo .put (key , valueList );
46- }
4742
43+ private String format (String s ) {
44+ int [] bit = new int [26 ];
45+
46+ for (int i = 0 ; i < s .length (); i ++) {
47+ char c = s .charAt (i );
48+ bit [c - 'a' ]++;
49+ }
50+
51+ StringBuilder sb = new StringBuilder ();
52+
53+ for (int i = 0 ; i < bit .length ; i ++) {
54+ sb .append (bit [i ]);
4855 }
4956
50- return new ArrayList <>( memo . values () );
57+ return sb . toString ( );
5158 }
5259}
0 commit comments