每日刷題 單詞搜尋

2021-09-27 10:22:30 字數 1319 閱讀 5947

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

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

示例:

board =

[『a』,『b』,『c』,『e』],

[『s』,『f』,『c』,『s』],

[『a』,『d』,『e』,『e』]

給定 word = 「abcced」, 返回 true.

給定 word = 「see」, 返回 true.

給定 word = 「abcb」, 返回 false.

該問題的解答可以分為兩方面:1. 遍歷陣列;2. dfs 尋找匹配的字元。

遍歷陣列:對於矩陣中的每乙個元素,檢查以該元素為起點,能否匹配 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 返回 ...