LeetCode79 單詞搜尋

2021-09-17 19:46:20 字數 1042 閱讀 6960

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

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

示例:

board =

[ ['a','b','c','e'],

['s','f','c','s'],

['a','d','e','e']

]給定 word = "abcced", 返回 true.

給定 word = "see", 返回 true.

給定 word = "abcb", 返回 false.

根據題目要求,上下相鄰或者左右相鄰的字母都能使用,也是說有多條「路」可供選擇,且,在這些「路」中,只要有一條「路」可以走通,就表示能夠匹配,顯然這是乙個深度優先搜尋問題

c++**:

class solution 

return ans;

} bool dfs(vector>& board, string word, int pos_i, int pos_j, int pos, vector>& use)

if (!ans && pos_i - 1 >= 0 && board[pos_i - 1][pos_j] == word[pos] && use[pos_i - 1][pos_j])

if (!ans && pos_j + 1 < board[0].size() && board[pos_i][pos_j + 1] == word[pos] && use[pos_i][pos_j + 1])

if (!ans && pos_j - 1 < board[0].size() && board[pos_i][pos_j - 1] == word[pos] && use[pos_i][pos_j - 1])

return ans;

}};

執行效率:

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 返回 ...