题目
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中间向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。
- leetcode链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/
思路
- 回溯算法
代码
/**
* @param {character[][]} board
* @param {string} word
* @return {boolean}
*/
var exist = function (board, word) {
function dfs(i, j, k) {
if (i < 0 || i >= board.length || j < 0 || j >= board[0].length || word[k] != board[i][j]) return false
if (k === word.length - 1) return true
board[i][j] = '#'
const res =
dfs(i - 1, j, k + 1) ||
dfs(i + 1, j, k + 1) ||
dfs(i, j - 1, k + 1) ||
dfs(i, j + 1, k + 1)
board[i][j] = word[k]
return res
}
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board[0].length; j++) {
if (dfs(i, j, 0)) return true
}
}
return false
}