Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def __init__(self, board, words):
- self.board = board
- self.words = words
- def find_words(self, board, words):
- root = {}
- for word in words:
- node = root
- for c in word:
- node = node.setdefault(c, {})
- node[None] = True
- board = {i + 1j * j: c
- for i, row in enumerate(board)
- for j, c in enumerate(row)}
- found = []
- def search(node, z, word):
- if node.pop(None, None):
- found.append(word)
- c = board.get(z)
- if c in node:
- board[z] = None
- for k in range(4):
- search(node[c], z + 1j ** k, word + c)
- board[z] = c
- for z in board:
- search(root, z, '')
- return found
- output = Solution([
- ['o','a','a','n'],
- ['e','t','a','e'],
- ['i','h','k','r'],
- ['i','f','l','v']
- ], ["oath","pea","eat","rain"])
- print(output.find_words([
- ['o','a','a','n'],
- ['e','t','a','e'],
- ['i','h','k','r'],
- ['i','f','l','v']
- ], ["oath","pea","eat","rain"]))
- >>> ['oath', 'eat']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement