题目链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/
难度:中等

描述:
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

题解

  1. class Solution:
  2. def exist(self, board: List[List[str]], word: str) -> bool:
  3. m, n = len(board), len(board[0])
  4. def dfs(i, j, k):
  5. if k == len(word):
  6. return True
  7. if i < 0 or i >= m:
  8. return False
  9. if j < 0 or j >= n:
  10. return False
  11. if board[i][j] != word[k]:
  12. return False
  13. board[i][j] = ""
  14. ret = dfs(i-1, j, k+1) or dfs(i+1, j, k+1) or dfs(i, j-1, k+1) or dfs(i, j+1, k+1)
  15. board[i][j] = word[k]
  16. return ret
  17. for i in range(m):
  18. for j in range(n):
  19. if dfs(i, j, 0):
  20. return True
  21. return False