classSolution(object): defexist(self, board, word): """ :type board: List[List[str]] :type word: str :rtype: bool """ ifnot board: returnFalse for i inrange(len(board)): for j inrange(len(board[0])): if self.dfs(board,i,j,word): returnTrue returnFalse
defdfs(self, board, i ,j ,word): iflen(word) == 0: returnTrue if i < 0or i >= len(board) or j<0or j >= len(board[0]) or word[0] != board[i][j]: returnFalse used = board[i][j] board[i][j] = '#' 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:]) board[i][j] = used return res