Guest User

Untitled

a guest
Oct 23rd, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. class Solution:
  2. def findWords(self, board, words):
  3. """
  4. :type board: List[List[str]]
  5. :type words: List[str]
  6. :rtype: List[str]
  7. """
  8.  
  9. for i in range(len(board)):
  10. for j in range(len(board[0])):
  11. if self.dfs(board, word, i, j):
  12. return True
  13.  
  14. return False
  15.  
  16.  
  17. def dfs(self, board, word, i, j):
  18. # base case:
  19. if not word:
  20. return True
  21.  
  22. # corner case: out of boundries
  23. if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]):
  24. return False
  25.  
  26. # do search
  27. c = board[i][j]
  28. board[i][j] = "#"
  29.  
  30. res = c == word[0] and (self.dfs(board, word[1:], i-1, j) or self.dfs(board, word[1:], i+1, j) or self.dfs(board, word[1:], i, j-1) or self.dfs(board, word[1:], i, j+1))
  31.  
  32. board[i][j] = c
  33. return res
Add Comment
Please, Sign In to add comment