Check if Word Can Be Placed In Crossword LeetCode solution in JavaScript

1
/**
2
* @param {character[][]} board
3
* @param {string} word
4
* @return {boolean}
5
*/
6
var placeWordInCrossword = function (board, word) {
7
for (let i = 0; i < board.length; i++) {
8
for (let j = 0; j < board[0].length; j++) {
9
if (i === 0 || board[i - 1][j] === "#") {
10
if (match(getFill(i, j, false))) {
11
return true;
12
}
13
}
14
if (j === 0 || board[i][j - 1] === "#") {
15
if (match(getFill(i, j, true))) {
16
return true;
17
}
18
}
19
}
20
}
21
return false;
22

23
function getFill(x, y, goRight) {
24
if (
25
x >= 0 &&
26
x < board.length &&
27
y >= 0 &&
28
y < board[0].length &&
29
board[x][y] !== "#"
30
) {
31
return goRight
32
? board[x][y] + getFill(x, y + 1, goRight)
33
: board[x][y] + getFill(x + 1, y, goRight);
34
}
35
return "";
36
}
37

38
function match(str) {
39
if (str.length !== word.length) {
40
return false;
41
}
42
let fromLeft = true;
43
let fromRight = true;
44
let l = 0;
45
let r = str.length - 1;
46
for (let each of word) {
47
if (!fromLeft && !fromRight) {
48
return false;
49
}
50
if (fromLeft) {
51
if (each !== str[l] && str[l] !== " ") {
52
fromLeft = false;
53
}
54
l++;
55
}
56
if (fromRight) {
57
if (each !== str[r] && str[r] !== " ") {
58
fromRight = false;
59
}
60
r--;
61
}
62
}
63
return fromLeft || fromRight;
64
}
65
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0