请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。
class Solution: def exist(self, board: List[List[str]], word: str) -> bool: def isValid(i, j): return 0 <= i < m and 0 <= j < n def dfs(i, j, visited): if len(visited) >= len(word): return True for dx, dy in delt: x, y = i + dx, j + dy if isValid(x, y) and (x, y) not in visited and word[len(visited)] == board[x][y]: visited.add((x, y)) if dfs(x, y, visited): return True visited.remove((x, y)) return False m, n = len(board), len(board[0]) delt = [[0, 1], [0, -1], [1, 0], [-1, 0]] for i in range(m): for j in range(n): visited = set() if board[i][j] == word[0]: visited.add((i, j)) if dfs(i, j, visited): return True return False
原文:https://www.cnblogs.com/liushoudong/p/13541725.html