# 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
#
# 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
#
#
#
# 示例 1:
#
#
# 输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "AB
# CCED"
# 输出:true
方法:深度优先
def findWords(board, word): if not board or not word: return False def dfs(board,i,j,word): if len(word) == 0: 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 tmp = board[i][j] board[i][j] = "#" res = dfs(board, i+1, j, word[1:]) or dfs(board, i-1, j, word[1:]) or dfs(board, i, j+1, word[1:]) or dfs(board, i, j-1, word[1:]) board[i][j] = tmp return res for i in range(len(board)): for j in range(len(board[0])): if dfs(board, i, j, word): return True return False