79. 单词搜索


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/word-search
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


DFS,值相等,就像四周找。不符合条件就回退。

    // 不允许重复使用
    public boolean exist(char[][] board, String word) {
        for(int i=0;i<board.length;i++) {
            for(int j=0;j<board[0].length;j++) {
                if(dfs(board,word,0,i,j)) {
                    return true;
                }
            }
        }
        return false;


    }

    public boolean dfs(char[][] board, String word, int index, int i,int j) {
        if(index == word.length()) {
            return true;
        }

        if(i<0 || i>=board.length || j<0 || j>= board[0].length || board[i][j] != word.charAt(index)) {
            return false;
        }
        // 回溯时,回退原始数据
        char src = board[i][j];
        board[i][j] = '.';
        boolean ret = dfs(board, word, index+1, i-1,j) ||
                        dfs(board, word, index+1, i+1,j) ||
                        dfs(board, word, index+1, i,j-1) ||
                        dfs(board, word, index+1, i,j+1);

        board[i][j] = src;
        return ret;


    }
posted @ 2022-03-01 11:19  一颗青菜  阅读(5)  评论(0)    收藏  举报