#79 Word Search——Top 100 Liked Questions

柔光的暖阳◎ 2022-01-26 10:43 336阅读 0赞

Given a 2D board and a word, find if the word exists in the grid.

The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

Example:

  1. board =
  2. [
  3. ['A','B','C','E'],
  4. ['S','F','C','S'],
  5. ['A','D','E','E']
  6. ]
  7. Given word = "ABCCED", return true.
  8. Given word = "SEE", return true.
  9. Given word = "ABCB", return false.

“””

第一次:深度优先搜索递归dfs
“””

  1. class Solution(object):
  2. def dfs(self, board, i, j, word):
  3. if len(word) == 0:
  4. return True #全部查找到
  5. if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]) or board[i][j] != word[0]:
  6. return False
  7. tmp = board[i][j]
  8. board[i][j] = '#' #为了避免重复查找,用井号代替
  9. 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: ])
  10. board[i][j] = tmp
  11. return res
  12. def exist(self, board, word):
  13. """
  14. :type board: List[List[str]]
  15. :type word: str
  16. :rtype: bool
  17. """
  18. if not board:
  19. return False
  20. for i in range(len(board)):
  21. for j in range(len(board[0])):#从任意位置出发进行深度搜索
  22. if self.dfs(board, i, j, word):
  23. return True #如果能找到,返回true
  24. return False

“””

Runtime: 344 ms, faster than 52.69% of Python online submissions forWord Search.

Memory Usage: 16.3 MB, less than 29.48% of Python online submissions for Word Search.

“””

发表评论

表情:
评论列表 (有 0 条评论,336人围观)

还没有评论,来说两句吧...

相关阅读