作者:他给我留下的美好_813 | 来源:互联网 | 2024-10-12 19:51
fromtypingimportList#这个是广搜的思路。通过一个点向上下左右走,寻找board中word对应存在的单词。#直到找到word中最后一个单词。classSoluti
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
# 还原。
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"))