LeetCode 79
从数组的每个位置进行比较第一个字母,如果相同,尝试进行一次dfs的搜索。
def exist(self, board: List[List[str]], word: str) -> bool:
m = len(board)
n = len(board[0])
def dfs(board, i, j, word, index, visited) -> bool:
if index >= len(word):
return True
if i < 0 or j < 0 or i >=m or j >=n: return False
if visited[i][j]: return False
if board[i][j] != word[index]: return False
visited[i][j] = True
direction = [[-1, 0], [1, 0], [0, -1], [0, 1]]
for di, dj in direction:
if dfs(board, i + di, j + dj, word, index + 1, visited):
return True
visited[i][j] = False
return False
for i in range(0, m):
for j in range(0, n):
if board[i][j] == word[0]:
visited = [[False]*n for j in range(0, m)]
if dfs(board, i, j, word, 0, visited):
return True
return False