在 JavaScript 中查找矩阵中的单词
我们需要编写一个JavaScript函数,它接受一个字符数组作为第一个参数,一个字符串作为第二个参数。
函数应该找出矩阵中是否存在字符,这些字符的非重复组合产生作为第二个参数提供给函数的字符串。
如果存在这样的组合,我们的函数应该返回true,否则返回false。
例如-
如果输入数组和字符串是-
const arr = [ ['s', 'd', 'k', 'e'], ['j', 'm', 'o', 'w'], ['y', 'n', 'l'] ]; const str = 'don';
那么输出应该是-
const output = false;
示例
以下是代码-
const arr = [ ['s', 'd', 'k', 'e'], ['j', 'm', 'o', 'width'], ['y', 'n', 'l'] ]; const str = 'don'; const containsWord = (arr = [], str = '') => { if (arr.length === 0){ return false; }; const height = arr.length; const width = arr[0].length; const dirs = [[-1, 0], [0, 1], [1, 0], [0, -1]]; const tryWord = (x, y, k) => { if (arr[x][y] !== str[k]) return false; if (k ===str.length- 1) return true; arr[x][y] = '*'; for (const [dx, dy] of dirs) { const i = x + dx; const j = y + dy; if (i >= 0 && i < height && j >= 0 && j < width) { if (tryWord(i, j, k + 1)) return true; } } arr[x][y] = str[k]; //重置 return false; }; for (let i = 0; i < height; i++) { for (let j = 0; j < width; j++) { if (tryWord(i, j, 0)) return true; } } return false; }; console.log(containsWord(arr, str));输出结果
以下是控制台输出-
false