79. Word Search

Medium

看的答案,这种简单粗暴的DFS还是不会写. 抄过来又觉得很简单,多写几道多体会体会吧

class Solution {
    //DFS
    public boolean exist(char[][] board, String word) {
        int m = board.length;
        int n = board[0].length;
        boolean[][] visited = new boolean[m][n];        
        for (int i = 0; i < m; i++){
            for (int j = 0; j < n; j++){
                if (board[i][j] == word.charAt(0) && dfsHelper(board, word, i, j, 0, visited)){
                    return true;
                }        
            }
        } 
        return false;
    }
    
    private boolean dfsHelper(char[][] board, String word, int i, int j, int index, boolean[][] visited){
        if (index == word.length()){
            return true;
        }        
        if (i < 0 || i >= board.length || j < 0 || j >= board[0].length || visited[i][j] || board[i][j] != word.charAt(index)){
            return false;
        }
        visited[i][j] = true;
        if (dfsHelper(board, word, i + 1, j, index + 1, visited) || dfsHelper(board, word, i - 1, j, index + 1, visited) ||
           dfsHelper(board, word, i, j + 1, index + 1, visited) || dfsHelper(board, word, i, j - 1, index + 1, visited)){
            return true;
        }
        visited[i][j] = false;
        return false;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原题 给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。单词可以由按顺序的相邻单元的字母组成,其中...
    Jason_Yuan阅读 4,531评论 0 0
  • Given a 2D board and a word, find if the word exists in t...
    matrxyz阅读 1,248评论 0 0
  • Given a 2D board and a word, find if the word exists in t...
    Jeanz阅读 1,228评论 0 0
  • Description Given a 2D board and a word, find if the word...
    Nancyberry阅读 988评论 0 0
  • 哈哈,最近的你,无论给你什么,拿到手里立刻就放进嘴里。我知道,你是用你的小嘴在探索这个世界。那么,这个世界好玩么?...
    猪小盐阅读 780评论 0 0