單詞搜尋 II

2021-09-12 14:44:32 字數 1367 閱讀 9502

給定乙個二維網格board和乙個字典中的單詞列表words,找出所有同時在二維網格和字典**現的單詞。

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

示例:

輸入:words=["oath","pea","eat","rain"]andboard=

[ ['o','a','a','n'],

['e','t','a','e'],

['i','h','k','r'],

['i','f','l','v']

]輸出:["eat","oath"]

思路:

1、要列印所有情況,因此進行dfs,單詞不允許重複,使用set儲存結果

2、將字典詞存到字典樹中

3、以二維陣列每乙個元素為單詞第乙個字母去遍歷字典樹,二維陣列中的延伸方向為上下左右,使用visit陣列儲存是否訪問過節點,使用陣列邊界判斷避免越界

4、在dfs過程中判斷單詞所在字典樹的節點end屬性是否為true,為true新增該節點,繼續dfs

5、dfs結束條件為樹節點為null,返回false;

class solution 

public void addsubnode(character key,trienode value)

public boolean containsnode(character key)

public boolean isend()

public void setend(boolean end)

}public listfindwords(char board, string words) else

if((i>0&&!visit[i-1][j])&&!success)

if((i0&&!visit[i][j-1])&&!success)

if((jsb.delete(sb.length()-1,sb.length());

visit[i][j]=false;

}return false;

}}

單詞搜尋 II

給出乙個由小寫字母組成的矩陣和乙個字典。找出所有同時在字典和矩陣中出現的單詞。乙個單詞可以從矩陣中的任意位置開始,可以向左 右 上 下四個相鄰方向移動。樣例給出矩陣 doaf agai dcan和字典 返回 dog doafa gaidcandad d oafa gaid cancan doaf a...

每日leetcode 單詞搜尋 單詞搜尋II

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...

LintCode 單詞搜尋 II

單詞搜尋 ii 給出乙個由小寫字母組成的矩陣和乙個字典。找出所有同時在字典和矩陣中出現的單詞。乙個單詞可以從矩陣中的任意位置開始,可以向左 右 上 下四個相鄰方向移動。您在真實的面試中是否遇到過這個題?yes 樣例 給出矩陣 doaf agai dcan和字典 返回 dog doafa gaidca...