79. 单词搜索
剑指 Offer 12. 矩阵中的路径

题目

image.png

题解

就是普通的DFS,其实也不难,就是写得太慢,多练练就好

  1. class Solution(object):
  2. def exist(self, board, word):
  3. """
  4. :type board: List[List[str]]
  5. :type word: str
  6. :rtype: bool
  7. """
  8. def dfs(target_str, pos=None):
  9. # 如果搜到最后字符串已经为空,说明搜索成功
  10. if target_str == '':
  11. return True
  12. x, y = pos
  13. move_step = [(0, 1), (0, -1), (1, 0), (-1, 0)]
  14. target_char = target_str[0]
  15. if 0 <= x < m and 0 <= y < n and S[x][y] == target_char:
  16. S[x][y] = 'None'
  17. # 把 S[i][j] 处标记为不可再访问
  18. for dx, dy in move_step:
  19. i, j = x+dx, y+dy
  20. if dfs(target_str[1:], pos=(i, j)):
  21. return True
  22. # 搜完之后记得改回来
  23. S[x][y] = target_char
  24. else:
  25. return False
  26. S=board
  27. m, n = len(S), len(S[0])
  28. for i in range(m):
  29. for j in range(n):
  30. if dfs(word, pos=(i, j)):
  31. return True
  32. # 如果遍历所有初始点都没搜到,返回 FALSE
  33. return False