leetcode 79 單詞搜尋

2021-09-29 11:52:32 字數 1309 閱讀 3546

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。

單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。

示例: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 返回 ...