LeeCode79单词搜索(Java)(dfs)

题目链接:LeeCode79单词搜索
题目描述:在这里插入图片描述

class Solution {
    
    
    private static int[][] dir=new int[][]{
    
    {
    
    1,0},{
    
    0,1},{
    
    -1,0},{
    
    0,-1}};
    public static boolean exist(char[][] board, String word) {
    
    
        boolean flag=false;
        int[][] book=new int[board.length][board[0].length];
        for (int i = 0; i < board.length; i++) {
    
    
            for (int j = 0; j < board[0].length; j++) {
    
    
                if(board[i][j]==word.charAt(0)&&flag==false&&book[i][j]==0){
    
    
                    book[i][j]=1;
                    flag=dfs(0,board,word,i,j,book);
                    book[i][j]=0;
                }
            }
        }
        return flag;
    }
    public static boolean dfs(int len,char[][] board,String word,int x,int y,int[][] book){
    
    
        if(len==word.length()-1){
    
    
            return true;
        }
        boolean result=false;
        for (int i = 0; i < dir.length; i++) {
    
    
            int xx=x+dir[i][0];
            int yy=y+dir[i][1];
            if(xx>=0&&xx<board.length&&yy>=0&&yy<board[0].length&&board[xx][yy]==word.charAt(len+1)&&book[xx][yy]==0){
    
    
                book[xx][yy]=1;
                if(!result)
                result=dfs(len+1,board,word,xx,yy,book);
                book[xx][yy]=0;
            }
        }
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43590593/article/details/112790231