File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string[] } words
3
+ * @param {string[] } puzzles
4
+ * @return {number[] }
5
+ */
6
+ const findNumOfValidWords = function ( words , puzzles ) {
7
+ let n = puzzles . length ,
8
+ offset = 'a' . charCodeAt ( )
9
+ let res = new Array ( n ) . fill ( 0 )
10
+ let cnt = { }
11
+
12
+ for ( let w of words ) {
13
+ let mask = 0
14
+ for ( let c of w ) {
15
+ mask |= 1 << ( c . charCodeAt ( ) - offset )
16
+ }
17
+ cnt [ mask ] = ~ ~ cnt [ mask ] + 1
18
+ }
19
+ for ( let i = 0 ; i < n ; i ++ ) {
20
+ let s = puzzles [ i ] ,
21
+ len = s . length
22
+ for ( let k = 0 ; k < 1 << ( len - 1 ) ; k ++ ) {
23
+ let mask = 1 << ( s [ 0 ] . charCodeAt ( ) - offset )
24
+ for ( let j = 0 ; j < len - 1 ; j ++ ) {
25
+ if ( k & ( 1 << j ) ) {
26
+ mask |= 1 << ( s [ j + 1 ] . charCodeAt ( ) - offset )
27
+ }
28
+ }
29
+ res [ i ] += ~ ~ cnt [ mask ]
30
+ }
31
+ }
32
+ return res
33
+ }
You can’t perform that action at this time.
0 commit comments