在 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

以上是 在 JavaScript 中查找矩阵中的单词 的全部内容, 来源链接: utcz.com/z/357028.html

回到顶部