LeetCode #79 Word Search
题目
解题方法
这题可以用深度优先遍历做,遍历数组,针对每一个位置判断是否为word中的当前字符,如果是,则先把当前字符暂时替换为特殊字符,然后对其前后左右四个方向分别搜索,直到word被搜完,或者ij越界,或者四个方向都不是word中当前字符,结束此次搜索。如果搜索到了word,则返回True。如果遍历结束仍然没有搜索到完整的word,返回False。
代码
class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
if not board:
return False
for i in range(len(board)):
for j in range(len(board[0])):
if self.dfs(board, i, j, word):
return True
return False
def dfs(self, board, i, j, word):
if not len(word):
return True
if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]) or word[0] != board[i][j]:
return False
temp = board[i][j]
board[i][j] = "#"
res = self.dfs(board, i - 1, j, word[1:]) or self.dfs(board, i + 1, j, word[1:]) or self.dfs(board, i, j - 1, word[1:]) or self.dfs(board, i, j + 1, word[1:])
board[i][j] = temp
return res

浙公网安备 33010602011771号