LeetCode 212. Word Search II
Solution1:我的答案
暴力搜索。。基于第79题的答案,真的是非常之慢啊!!!
快的方法均是基于字典树的方法,真是复杂。。
class Solution {
public:
vector<string> findWords(vector<vector<char>>& board, vector<string>& words) {
set<string> res;
if (!board.size() || !board[0].size() || !words.size())
return {};
int m = board.size(), n = board[0].size();
for (auto word: words) {
bool symbol = false;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
vector<vector<int> > visited(m, vector<int>(n, 0));//0:未用;1:用过
string temp;
int len = 0;
symbol = my_search(board, i, j, len, word, visited);
if (symbol) res.insert(word);
}
}
}
return vector<string> (res.begin(), res.end());
}
bool my_search(vector<vector<char>>& board, int i, int j, int len,
string& word, vector<vector<int> >& visited) {
if (len == word.size())
return true;
if (i >= 0 && i < board.size() && j >= 0
&& j < board[0].size() && visited[i][j] == 0
&& board[i][j] == word[len]) {
len++;
visited[i][j] = 1;
if (my_search(board, i - 1, j, len, word, visited)
|| my_search(board, i + 1, j, len, word, visited)
|| my_search(board, i, j - 1, len, word, visited)
|| my_search(board, i, j + 1, len, word, visited))
return true;
len--;
visited[i][j] = 0;
}
return false;
}
};