給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。
單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例:
board =該問題的解答可以分為兩方面:1. 遍歷陣列;2. dfs 尋找匹配的字元。[『a』,『b』,『c』,『e』],
[『s』,『f』,『c』,『s』],
[『a』,『d』,『e』,『e』]
給定 word = 「abcced」, 返回 true.
給定 word = 「see」, 返回 true.
給定 word = 「abcb」, 返回 false.
遍歷陣列:對於矩陣中的每乙個元素,檢查以該元素為起點,能否匹配 word 字串。
dfs 尋找匹配的字串:對於每乙個元素,從上下左右四個方向尋找字元來匹配。
**:
class
solution
//推出迴圈條件
if( flag || i <
0|| i >= board.
size()
|| j <
0|| j >= board[i]
.size()
|| word[k]
!= board[i]
[j]|| hadgone.
find()
!= hadgone.
end())
return
;
hadgone.
insert()
;//在上下左右四個方向上深搜
dfs( board, word, k +
1, i -
1, j, hadgone)
;//上
dfs( board, word, k +
1, i +
1, j, hadgone)
;//下
dfs( board, word, k +
1, i, j -
1, hadgone)
;//左
dfs( board, word, k +
1, i, j +
1, hadgone)
;//右
hadgone.
erase()
;}bool
exist
(vectorchar
>>
& board, string word)
return
false;}
};
每日刷題 單詞接龍II
給定兩個單詞 beginword 和 endword 和乙個字典 wordlist,找出所有從 beginword 到 endword 的最短轉換序列。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的中間單詞必須是字典中的單詞。說明 如果不存在這樣的轉換序列,返回乙個空列表。所有單詞具有相...
Leecode刷題筆記 79 單詞搜尋
題目要求 給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcce...
每日leetcode 單詞搜尋 單詞搜尋II
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...