File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ /** 
2+  * @param  {string[] } words 
3+  * @return  {string[] } 
4+  */ 
5+ 
6+ const  findAllConcatenatedWordsInADict  =  function  ( words )  { 
7+   const  pre  =  new  Set ( ) 
8+   words . sort ( ( a ,  b )  =>  a . length  -  b . length ) 
9+   const  res  =  [ ] 
10+   for ( let  i  =  0 ;  i  <  words . length ;  i ++ )  { 
11+     if ( valid ( words [ i ] ,  pre ) )  { 
12+       res . push ( words [ i ] ) 
13+     } 
14+     pre . add ( words [ i ] ) 
15+   } 
16+ 
17+   return  res 
18+ 
19+   function  valid ( str ,  set )  { 
20+     if ( set . size  ===  0 )  return  false 
21+     const  dp  =  Array ( str . length  +  1 ) . fill ( false ) 
22+     dp [ 0 ]  =  true 
23+     for ( let  i  =  1 ;  i  <=  str . length ;  i ++ )  { 
24+       for ( let  j  =  0 ;  j  <  i ;  j ++ )  { 
25+         if ( ! dp [ j ] )  continue 
26+         if ( set . has ( str . slice ( j ,  i ) ) )  { 
27+           dp [ i ]  =  true 
28+           break 
29+         } 
30+       } 
31+     } 
32+     
33+     return  dp [ str . length ] 
34+   } 
35+ } 
36+ 
37+ 
38+ 
39+ 
40+ // another 
41+ 
142/** 
243 * @param  {string[] } words 
344 * @return  {string[] } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments