Skip to content

Commit 2b396f1

Browse files
python: add problem 79 and unittest
1 parent aefdb07 commit 2b396f1

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

‎Python/sln_1_100/solution_71_80.py

+43
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,46 @@ def backtrace(res=[]):
125125

126126
backtrace()
127127
return results
128+
129+
def exist(self, board: List[List[str]], word: str) -> bool:
130+
"""
131+
79
132+
:param board:
133+
:param word:
134+
:return:
135+
"""
136+
if not board or not board[0]:
137+
return False
138+
if not word:
139+
return False
140+
141+
for i in range(len(board)):
142+
for j in range(len(board[0])):
143+
if board[i][j] == word[0]:
144+
path = {(i, j)}
145+
is_valid = self.check_valid(board, path, word[1:], i, j)
146+
if is_valid:
147+
return True
148+
return False
149+
150+
def check_valid(self, board, path, word, i, j):
151+
if not word:
152+
return True
153+
154+
if i > 0 and board[i - 1][j] == word[0] and (i - 1, j) not in path:
155+
is_valid = self.check_valid(board, path | {(i - 1, j)}, word[1:], i - 1, j)
156+
if is_valid:
157+
return True
158+
if i < len(board) - 1 and board[i + 1][j] == word[0] and (i + 1, j) not in path:
159+
is_valid = self.check_valid(board, path | {(i + 1, j)}, word[1:], i + 1, j)
160+
if is_valid:
161+
return True
162+
if j > 0 and board[i][j - 1] == word[0] and (i, j - 1) not in path:
163+
is_valid = self.check_valid(board, path | {(i, j - 1)}, word[1:], i, j - 1)
164+
if is_valid:
165+
return True
166+
if j < len(board[0]) - 1 and board[i][j + 1] == word[0] and (i, j + 1) not in path:
167+
is_valid = self.check_valid(board, path | {(i, j + 1)}, word[1:], i, j + 1)
168+
if is_valid:
169+
return True
170+
return False

‎Python/sln_1_100/test_solution_71_80.py

+10
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,13 @@ def test_sortColors(self):
4444
arr1 = [2, 0, 1]
4545
self.sln.sortColors(arr1)
4646
assert arr1 == [0, 1, 2]
47+
48+
def test_exist(self):
49+
board = [
50+
['A', 'B', 'C', 'E'],
51+
['S', 'F', 'C', 'S'],
52+
['A', 'D', 'E', 'E']
53+
]
54+
self.assertEqual(self.sln.exist(board, 'ABCCED'), True)
55+
self.assertEqual(self.sln.exist(board, 'SEE'), True)
56+
self.assertEqual(self.sln.exist(board, 'ABCB'), False)

0 commit comments

Comments
 (0)