[Mdfs] lc79. 单词搜索(二分+双指针+经典)

1. 题目来源

链接:79. 单词搜索

2. 题目解析

代码:

class Solution {
    
    
public:
    bool exist(vector<vector<char>>& board, string word) {
    
    
        if (board.empty() || board[0].empty()) return false;
        int m = board.size(), n = board[0].size();
        for (int i = 0; i < m; ++i) {
    
    
            for (int j = 0; j < n; ++j) {
    
    
                if (search(board, word, 0, i, j)) return true;
            }
        }
        return false;
    }
    bool search(vector<vector<char>>& board, string word, int idx, int i, int j) {
    
    
        if (idx == word.size()) return true;
        int m = board.size(), n = board[0].size();
        if (i < 0 || j < 0 || i >= m || j >= n || board[i][j] != word[idx]) return false;    
        char c = board[i][j];
        board[i][j] = '#';
        bool res = search(board, word, idx + 1, i - 1, j) 
                 || search(board, word, idx + 1, i + 1, j)
                 || search(board, word, idx + 1, i, j - 1)
                 || search(board, word, idx + 1, i, j + 1);
        board[i][j] = c;
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/yl_puyu/article/details/112000294
今日推荐