1. 程式人生 > 實用技巧 >79單詞搜尋

79單詞搜尋

from typing import List
# 這個是廣搜的思路。通過一個點向上下左右走,尋找board中word對應存在的單詞。
# 直到找到word中最後一個單詞。
class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
# 定義二維陣列的行和列。
col = len(board)
row = len(board[0])
# 定義廣搜函式。
def dfs(index,x,y):
# 當尋找的單詞個數夠了之後,就返回正確
if index == len(word) - 1:
return True
# 因為題目要求不能夠用重複的元素,所以這個先將這個數改掉。
temp = board[x][y]
board[x][y] = 0
# 深搜的精髓,上下左右尋找,判斷哪個方向的節點符合。
for i,j in [[x + 1,y],[x - 1,y],[x,y + 1],[x,y -1]]:
# 判斷節點的索引有沒有出界。
if 0 <= i < col and 0 <= j < row and board[i][j] == word[index +1 ]:
if dfs(index + 1,i,j):
return True
# 還原。
board[x][y] = temp
return False
# 遍歷二維陣列,一個個進行判斷。
for i in range(col):
for j in range(row):
if board[i][j] == word[0]:
if dfs(0, i, j):
return True
# 遍歷完不符合的話就返回假。
else:
return False

A = Solution()
print(A.exist([
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
],'ABCCED'))