單詞搜尋 II

2021-07-09 02:49:32 字數 1615 閱讀 2254

給出乙個由小寫字母組成的矩陣和乙個字典。找出所有同時在字典和矩陣中出現的單詞。乙個單詞可以從矩陣中的任意位置開始,可以向左/右/上/下四個相鄰方向移動。

樣例給出矩陣:

doaf

agai

dcan

和字典:

返回

dog:

doafa

gaidcan

dad:

d

oafa

gaid

can

can:

doaf

agai

dcan

again:

doaf

agai

dcan

挑戰使用單詞查詢樹來實現你的演算法

class node

}};class solution

setresult;

int m = board.size();

int n = board[0].size();

vector> flags(m, vector(n, false));

for (int i = 0; i < m; i++)

}vectorrst;

for (set::iterator it = result.begin(); it != result.end(); it++)

return rst;

}private:

void addtotree(node *root, string &word)

else

}p->isend = true;

}void findword(node *root, vector> &board, int m, int n,

int row, int col, vector&buf, set&result,

vector> &flags)

node *p = root->children[board[row][col]-'a'];

if (p == null)

if (flags[row][col])

buf.push_back(board[row][col]);

flags[row][col] = true;

if (root->children[board[row][col]-'a']->isend)

result.insert(temp);

}findword(p, board, m, n, row, col-1, buf, result, flags);

findword(p, board, m, n, row, col+1, buf, result, flags);

findword(p, board, m, n, row-1, col, buf, result, flags);

findword(p, board, m, n, row+1, col, buf, result, flags);

buf.pop_back();

flags[row][col] = false;

}};

單詞搜尋 II

給定乙個二維網格board和乙個字典中的單詞列表words,找出所有同時在二維網格和字典 現的單詞。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母在乙個單詞中不允許被重複使用。示例 輸入 words oath pea ea...

每日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...