题解 | #矩阵中的路径#
矩阵中的路径
http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6
def hasPath(self , matrix: List[List[str]], word: str) -> bool:
# write code here
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == word[0]:
if self.dfs(matrix, word, i, j, 0):
return True
return False
def dfs(self, matrix, word, i, j, index):
#判断边界条件
if i<0 or i>=len(matrix) or j<0 or j>=len(matrix[0]) or matrix[i][j] != word[index]:
return False
#当index序列等于word长度减一时表明所有字符都已遍历,成功找到该word
if index == len(word) - 1:
return True
tmp = matrix[i][j]
# 将当前字符置为'.',防止后续回溯到原重复字符,最后需要将字符还原
matrix[i][j] = '.'
# 进行上下左右四个方向遍历查找下一个字符,四个方向有一个找到返回True
if self.dfs(matrix, word, i-1, j, index+1) or \
self.dfs(matrix, word, i+1, j, index+1) or \
self.dfs(matrix, word, i, j-1, index+1) or \
self.dfs(matrix, word, i, j+1, index+1):
return True
# 遍历后都找不到的话,将原字符还原,便于下一个(i, j)的迭代递归
matrix[i][j] = tmp
return False