class Solution {
public:
bool res = false;
bool backtrack(vector<vector<char>>& board, int row, int col, string& word, int index){
if(index == word.size()) return true;
if(row < 0 || row >= board.size() || col < 0 || col >= board[0].size() || board[row][col] != word[index])
return false;
char temp = board[row][col];
board[row][col] = '#';
int i = row;
int j = col;
bool res1 = backtrack(board, i + 1, j, word, index + 1);
bool res2 = backtrack(board, i - 1, j, word, index + 1);
bool res3 = backtrack(board, i, j + 1, word, index + 1);
bool res4 = backtrack(board, i, j - 1, word, index + 1);
board[row][col] = temp;
return res1 || res2 || res3 || res4;
}
bool exist(vector<vector<char>>& board, string word) {
int m = board.size();
int n = board[0].size();
if(m * n < word.size()) return false;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(board[i][j] == word[0] && backtrack(board, i, j, word, 0)){
return true;
}
}
}
return false;
}
};
LeetCode Hot100 79.单词搜索
最新推荐文章于 2024-10-03 23:42:25 发布