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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
class Solution:
def findWord(self, matrix: List[List[str]], word: str) -> bool:
rows = len(matrix)
cols = len(matrix[0])
len_word = len(word)
# Check each row
for i in range(rows):
for j in range(cols - len_word + 1):
if self.checkRow(matrix, word, i, j):
return True
# Check each column
for j in range(cols):
for i in range(rows - len_word + 1):
if self.checkColumn(matrix, word, i, j):
return True
return False
def checkRow(self, matrix: List[List[str]], word: str, row: int, col: int) -> bool:
for k in range(len(word)):
if matrix[row][col + k] != word[k]:
return False
return True
def checkColumn(self, matrix: List[List[str]], word: str, row: int, col: int) -> bool:
for k in range(len(word)):
if matrix[row + k][col] != word[k]:
return False
return True
if __name__ == "__main__":
sol = Solution()
matrix = [
['F', 'A', 'C', 'I'],
['O', 'B', 'Q', 'P'],
['A', 'N', 'O', 'B'],
['M', 'A', 'S', 'S']
]
print(sol.findWord(matrix, "FOAM")) # Output: True
print(sol.findWord(matrix, "MASS")) # Output: True
print(sol.findWord(matrix, "FACE")) # Output: False
|