給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。
單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例:board =
[['a','b','c','e'],
['s','f','c','s'],
['a','d','e','e']
]給定 word = "abcced", 返回 true.
給定 word = "see", 返回 true.
給定 word = "abcb", 返回 false.
class solution:
def exist(self, board: list[list[str]], word: str) -> bool:
used = [[false]*len(board[0]) for i in range(len(board))]
for i in range(len(board)):
for j in range(len(board[0])):
if self.back(board, used, i, j, word, 0):
return true
return false
def back(self, board, used, row, col, word, index):
if index == len(word):
return true
if row < 0 or row >= len(board) or col < 0 or col >= len(board[0]) or used[row][col] or board[row][col] != word[index]:
return false
used[row][col] = true
if self.back(board, used, row+1, col, word, index+1):
return true
if self.back(board, used, row-1, col, word, index+1):
return true
if self.back(board, used, row, col+1, word, index+1):
return true
if self.back(board, used, row, col-1, word, index+1):
return true
used[row][col] = false
return false
leetcode 79 單詞搜尋
本題算是乙個組合類的題,也類似於深度優先搜尋演算法 設定乙個與字母構成的陣列大小相同的陣列,用來儲存某個位置的字母是否被訪問過,標註為1表示已被訪問過,避免重複 每次要看i,j位置上下左右的字母是否等於單詞第t個位置的字母 進行深度優先搜尋 bool find std vector board,st...
leetcode 79 單詞搜尋
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...
Leetcode 79 單詞搜尋
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...