@@ -7,31 +7,42 @@ var DEBUG = process.env.DEBUG;
7
7
*/
8
8
var isScramble = function ( s1 , s2 ) {
9
9
var m = { } ;
10
+ function set ( s , t , v ) {
11
+ m [ s ] = m [ s ] || { } ;
12
+ m [ s ] [ t ] = v ;
13
+ return v ;
14
+ }
15
+ function get ( s , t ) {
16
+ if ( m [ s ] === undefined ) return m [ s ] ;
17
+ else return m [ s ] [ t ] ;
18
+ }
10
19
function f ( s , t ) {
11
- if ( m [ [ s , t ] ] !== undefined ) return m [ s , t ] ;
12
- if ( s === t ) return m [ [ s , t ] ] = true ;
20
+ var v ;
21
+ if ( ( v = get ( s , t ) ) !== undefined ) return v ;
22
+ if ( s === t ) return set ( s , t , true ) ;
13
23
for ( var i = 1 ; i < s . length ; i ++ ) {
14
24
if ( f ( s . substr ( 0 , i ) , t . substr ( - i ) ) &&
15
25
f ( s . substr ( i ) , t . substr ( 0 , t . length - i ) ) )
16
- return m [ [ s , t ] ] = true ;
26
+ return set ( s , t , true ) ;
17
27
if ( f ( s . substr ( 0 , i ) , t . substr ( 0 , i ) ) &&
18
28
f ( s . substr ( i ) , t . substr ( i ) ) )
19
- return m [ [ s , t ] ] = true ;
29
+ return set ( s , t , true ) ;
20
30
}
21
- return m [ [ s , t ] ] = false ;
31
+ return set ( s , t , false ) ;
22
32
}
23
33
return f ( s1 , s2 ) ;
24
34
} ;
25
35
26
36
function test ( f ) {
27
-
28
37
[
29
38
[ "great" , "great" ] ,
30
39
[ "great" , "eatgr" ] ,
31
40
[ "great" , "rgeat" ] ,
32
41
[ "great" , "rgtae" ] ,
33
42
[ "great" , "rtgea" ] ,
34
43
[ "dsanujiiqwfsysnfsrwbrfhhpqicbw" , "dabbciwqphhfrwrsfnsysfwqiijuns" ] ,
44
+ [ "pcighfdjnbwfkohtklrecxnooxyipj" , "npodkfchrfpxliocgtnykhxwjbojie" ] ,
45
+ [ "iydzdwbqbfixognqhbmimhwyhmdnrm" , "nmbywdbnmmfybqqighdriizmxdhwho" ] ,
35
46
] . forEach ( function ( input ) {
36
47
console . log ( f . apply ( undefined , input ) ) ;
37
48
} ) ;
0 commit comments