單詞可以由按順序的相鄰單元的字母組成,其中相鄰單元指的是水平或者垂直方向相鄰。每個單元中的字母最多只能使用一次。
"abce",
"sfcs",
"adee"
word = "abcced"
, ->返回 true,
word = "see"
,-> 返回 true,
word = "abcb"
, -> 返回 false.思路
使用dfs,不過注意一下,這一題是需要回溯的,因為每次每個字母只能走一次,所以我們需要乙個記錄矩陣來判斷是否已經走過,下面看**和注釋:
public boolean exist(char board, string word) }}
return false;
}private boolean helper(char board, int i, int j, string word, int start, int record)
// 越界
if(i<0 || i>=rows || j<0 || j>=cols)
// 不通
if(board[i][j]!=word.charat(start))
// 已走
if(record[i][j]==1)
record[i][j] = 1;
if(helper(board,i-1,j,word,start+1,record))
if(helper(board,i+1,j,word,start+1,record))
if(helper(board,i,j-1,word,start+1,record))
if(helper(board,i,j+1,word,start+1,record))
// 回退,此條路不通,尋找其他方案
record[i][j] = 0;
return false;
}
單詞搜尋 LintCode
給出乙個二維的字母板和乙個單詞,尋找字母板網格中是否存在這個單詞。單詞可以由按順序的相鄰單元的字母組成,其中相鄰單元指的是水平或者垂直方向相鄰。每個單元中的字母最多只能使用一次。樣例 給出board abce sfcs adee word abcced 返回 true,word see 返回 tru...
lintcode 單詞搜尋 123
給出乙個二維的字母板和乙個單詞,尋找字母板網格中是否存在這個單詞。單詞可以由按順序的相鄰單元的字母組成,其中相鄰單元指的是水平或者垂直方向相鄰。每個單元中的字母最多只能使用一次。樣例 給出board abce sfcs adee word abcced 返回 true,word see 返回 tru...
LintCode 單詞搜尋 II
單詞搜尋 ii 給出乙個由小寫字母組成的矩陣和乙個字典。找出所有同時在字典和矩陣中出現的單詞。乙個單詞可以從矩陣中的任意位置開始,可以向左 右 上 下四個相鄰方向移動。您在真實的面試中是否遇到過這個題?yes 樣例 給出矩陣 doaf agai dcan和字典 返回 dog doafa gaidca...