4
4
* @return {boolean }
5
5
*/
6
6
const exist = ( board , word ) => {
7
- let doesExist = false ;
7
+ // let doesExist = false;
8
8
// , wordList = word.split("");
9
9
// console.log(wordList);
10
10
// wordList.shift()
11
11
// console.log(wordList);
12
+ console . log ( board ) ;
13
+ console . log ( word ) ;
14
+ // let visit = Array.from({ length: board.length }, () => Array.from({ length: board[0].length }, () => 0))
15
+ let visit = new Set ( ) ;
12
16
13
- const expand = ( r , c , visit , i ) => {
17
+ const expand = ( r , c , i ) => {
14
18
console . log ( `r:${ r } , c:${ c } , i:${ i } , visit:` )
15
19
// console.log(wordList)
16
20
console . log ( visit )
21
+ console . log ( "visited?:" + visit . has ( `${ r } ${ c } ` ) )
17
22
// console.log(i)
18
23
// console.log(word.length)
19
24
// console.log(i === word.length)
20
25
21
26
if ( i === word . length ) {
22
27
console . log ( ">>>>>>>> >TRUE" )
23
- doesExist = true ;
28
+ return true ;
24
29
}
25
30
26
31
if (
27
32
r === board . length ||
28
33
c === board [ 0 ] . length ||
29
34
r < 0 ||
30
35
c < 0 ||
31
- 1 === visit [ r ] [ c ]
36
+ visit . has ( `${ r } ${ c } ` ) ||
37
+ word [ i ] !== board [ r ] [ c ]
32
38
) {
33
- return ;
39
+ return false ;
34
40
}
35
41
36
- if ( word [ i ] !== board [ r ] [ c ] ) return ;
37
-
38
- console . log ( `${ word [ i ] } vs ${ board [ r ] [ c ] } ` )
39
- visit [ r ] [ c ] = 1 ;
42
+ // visit[r][c] = 1;
43
+ visit . add ( `${ r } ${ c } ` ) ;
44
+ console . log ( visit )
40
45
i ++
41
- // wordList.shift();
42
-
43
- // expand(r, c + 1, visit, wordList);
44
- // expand(r + 1, c, visit, wordList);
45
- // expand(r, c - 1, visit, wordList);
46
- // expand(r - 1, c, visit, wordList);
47
- expand ( r , c + 1 , visit , i ) ;
48
- expand ( r + 1 , c , visit , i ) ;
49
- expand ( r , c - 1 , visit , i ) ;
50
- expand ( r - 1 , c , visit , i ) ;
46
+
47
+ let res = expand ( r , c + 1 , i ) ||
48
+ expand ( r + 1 , c , i ) ||
49
+ expand ( r , c - 1 , i ) ||
50
+ expand ( r - 1 , c , i ) ;
51
+
52
+ console . log ( "... Deleting visit" )
53
+ console . log ( visit )
54
+ visit . delete ( `${ r } ${ c } ` ) ;
55
+ console . log ( visit )
56
+ return res ;
57
+ // return expand(r, c + 1, i) ||
58
+ // expand(r + 1, c, i) ||
59
+ // expand(r, c - 1, i) ||
60
+ // expand(r - 1, c, i);
51
61
}
52
62
53
63
// console.log(board)
54
64
for ( let r = 0 ; r < board . length ; r ++ ) {
55
65
for ( let c = 0 ; c < board [ r ] . length ; c ++ ) {
56
- if ( ! doesExist && word [ 0 ] === board [ r ] [ c ] ) {
66
+ if ( word [ 0 ] === board [ r ] [ c ] ) {
57
67
console . log ( `>>>>> ${ word [ 0 ] } === ${ board [ r ] [ c ] } ` )
58
- let visit = Array . from ( { length : board . length } , ( ) => Array . from ( { length : board [ 0 ] . length } , ( ) => 0 ) )
59
68
// let wordList = word.split("");
60
69
// expand(r, c, visit, wordList);
61
- expand ( r , c , visit , 0 ) ;
70
+ if ( expand ( r , c , 0 ) ) return true ;
62
71
}
63
72
}
64
73
}
65
74
66
- // console.log(board)
67
-
68
- return doesExist ;
75
+ return false ;
69
76
} ;
70
77
71
78
let x = null ;
@@ -77,11 +84,11 @@ let x = null;
77
84
// ["A", "D", "E", "E"]
78
85
// ], "ABCCED")//true
79
86
80
- x = exist ( [
81
- [ "A" , "B" , "C" , "E" ] ,
82
- [ "S" , "F" , "E" , "S" ] ,
83
- [ "A" , "D" , "E" , "E" ]
84
- ] , "ABCEFSADEESE" ) // true
87
+ // x = exist([
88
+ // ["A", "B", "C", "E"],
89
+ // ["S", "F", "E", "S"],
90
+ // ["A", "D", "E", "E"]
91
+ // ], "ABCEFSADEESE") // true
85
92
86
93
// x = exist(
87
94
// [
@@ -103,6 +110,13 @@ x = exist([
103
110
// ["a", "a", "a", "a"]
104
111
// ], "aaaaaaaaaaab") // false
105
112
113
+ x = exist (
114
+ [
115
+ [ "C" , "A" , "A" ] ,
116
+ [ "A" , "A" , "A" ] ,
117
+ [ "B" , "C" , "D" ]
118
+ ] , "AAB" ) // true
119
+
106
120
107
121
console . log ( "Result" )
108
122
console . log ( x )
0 commit comments