File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {string[] } strs
3+ * @return {string[][] }
4+ */
5+ var groupAnagrams = function ( strs ) {
6+ const strsMap = new Map ( ) ;
7+ for ( let str of strs ) {
8+ const strArr = str . split ( '' ) . sort ( )
9+ const keyName = strArr . join ( '-' )
10+ strsMap . set ( keyName , [ ...( strsMap . get ( keyName )
11+ || [ ] ) , str ] )
12+ }
13+ return Array . from ( strsMap . values ( ) )
14+ } ;
15+
16+ //시간복잡도 : O(n * klogk)
17+ // 공간복잡도 :O(n · k)
18+
19+ //2.문자 빈도수 기반 키 만들기
20+ // 알파벳이 26뿐이므로 각 단어마다 알파벳 개수를 세서 카운트배열 만들어 이걸 키로 사용
21+ var groupAnagrams = function ( strs ) {
22+ const map = new Map ( ) ;
23+
24+ for ( let str of strs ) {
25+ const count = new Array ( 26 ) . fill ( 0 ) ;
26+ for ( let char of str ) {
27+ count [ char . charCodeAt ( 0 ) - 97 ] ++ ;
28+ }
29+ const key = count . join ( '#' ) ; // 구분자 없으면 ["1","11"]과 ["11","1"] 같은 키로 오해 가능
30+ map . set ( key , [ ...( map . get ( key ) || [ ] ) , str ] ) ;
31+ }
32+
33+ return Array . from ( map . values ( ) ) ;
34+ } ;
35+
36+ //시간복잡도 : O(n * k). 정렬이 없으므로
37+ // 공간복잡도: O(n · k)
You can’t perform that action at this time.
0 commit comments