class Solution {
public:
unsigned int len1, len2;
bool exist(vector<vector<char>>& board, string word) {
len1 = board.size();
if(len1 == 0) return false;
len2 = board[0].size();
vector<vector<int>> flag(len1, vector<int>(len2, 0));
for(int i = 0; i < len1; i++) {
for(int j = 0; j < len2; j++) {
if(helper(board, i, j, word, 0, flag))
return true;
}
}
return false;
}
private:
bool helper(vector<vector<char>> &board, int row, int col,
const string &word, int index, vector<vector<int>> &visited) {
if(index == word.length() - 1) {
return board[row][col] == word[index];
}
//方向数组
int direction[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
if(board[row][col] == word[index]) {
visited[row][col] = 1;
for(int i = 0; i < 4; i++) {
int dx = row + direction[i][0];
int dy = col + direction[i][1];
if(dx >= 0 && dx < len1 && dy >= 0 && dy < len2 && !visited[dx][dy]
&& helper(board, dx, dy, word, index + 1, visited)) {
return true;
}
}
visited[row][col] = 0;
}
return false;
}
};
LeetCode79. 单词搜索
最新推荐文章于 2024-05-05 22:13:56 发布