class Solution {
public:
bool exist(vector<vector<char>>& board, string word) {
for (int i = 0; i < board.size(); i++) {
for (int j = 0; j < board[0].size(); j++) {
if (findWord(i, j, board, word, 0))
return true;
}
}
return false;
}
private:
bool findWord(int i, int j, vector<vector<char>>& board, string word, int index) {
if (i >= board.size() || i < 0 || j >= board[0].size() || j < 0 || board[i][j] != word[index])return false;
if (index == word.size() - 1)return true;
board[i][j] = '\0';
bool ans = findWord(i - 1, j, board, word, index + 1) || findWord(i + 1, j, board, word, index + 1) ||
findWord(i, j - 1, board, word, index + 1) || findWord(i, j + 1, board, word, index + 1);
board[i][j] = word[index];
return ans;
}
};
剑指 Offer 12. 矩阵中的路径
最新推荐文章于 2024-09-11 22:42:14 发布