-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path79_Word_Search.py
More file actions
28 lines (24 loc) · 802 Bytes
/
Copy path79_Word_Search.py
File metadata and controls
28 lines (24 loc) · 802 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
row = len(board)
col = len(board[0])
path = set()
def dfs(r, c, i):
if i == len(word):
return True
if r<0 or c<0 or r>=row or c>=col or word[i]!=board[r][c] or ((r,c) in path):
return False
path.add((r,c))
predicate = (
dfs(r+1,c, i+1) or
dfs(r-1,c, i+1) or
dfs(r, c+1, i+1) or
dfs(r, c-1, i+1)
)
path.remove((r,c))
return predicate
for i in range(row):
for j in range(col):
if dfs(i,j,0):
return True
return False