LeetCodeTop100_79. 單詞搜索
給定一個 m x n 二維字符網(wǎng)格 board 和一個字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。
單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許被重復(fù)使用。
?
示例 1:
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
輸出:true
示例 2:
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
輸出:true
示例 3:
輸入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
輸出:false
簡單bfs;
u代表當(dāng)前枚舉到了目標(biāo)單詞word第u個位置。
x,y是當(dāng)前搜索到的二維字符網(wǎng)格的橫縱坐標(biāo)。
搜索過程如下:
1、在二維字符網(wǎng)格中枚舉每個單詞的起點。
2、從該起點出發(fā)向四周搜索單詞word,并記錄此時枚舉到單詞word的第u個位置 ( u從0開始)。
3、如果當(dāng)前搜索的位置(x,y)的元素board[x][y] == word[u],則繼續(xù)向四周搜索。
4、直到枚舉到單詞word的最后一個字母返回ture,否則返回false。
遞歸邊界:
1、當(dāng)搜索過程出現(xiàn)當(dāng)前位置board[x][y] != word[u] ,說明當(dāng)前路徑不合法,返回false。
2、u == word.size() - 1,成功搜索到單詞末尾,返回true。
實現(xiàn)細(xì)節(jié):
1、從搜索過的位置繼續(xù)搜索下一層時,需要對當(dāng)前位置進(jìn)行標(biāo)識,表示已經(jīng)搜索
2、可以使用偏移數(shù)組來簡化代碼。