题解 | 单词搜索

单词搜索

https://www.nowcoder.com/practice/987f2981769048abaf6180ed63266bb2

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param board string字符串一维数组 
     * @param word string字符串 
     * @return bool布尔型
     */
     //上下左右
     int []dx={0,0,-1,1};
     int []dy={-1,1,0,0};
     boolean vis[][];
     char[]word;
     int m,n;
     
    public boolean exist (String[] board, String _word) {
        // write code here
        word=_word.toCharArray();
        m=board.length; n=board[0].length();
        vis=new boolean[m][n];
       
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(board[i].charAt(j)==word[0]){
                    if(dfs(board,i,j,0)==true){
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public boolean dfs(String[]board,int i,int j,int pos){
        if(pos==word.length-1){
            return true;
        }
        vis[i][j]=true;
        for(int k=0;k<4;k++){
            int x=i+dx[k];
            int y=j+dy[k];
            if(x>=0&&x<m&&y>=0&&y<n&&!vis[x][y]&&board[x].charAt(y)==word[pos+1]){
                if(dfs(board,x,y,pos+1)){
                    return true;
                }
            }
        }
        vis[i][j]=false;
        return false;
    }
}

全部评论

相关推荐

牛客79969855...:简历上面只有实习的话,面试官应该会深挖你的实习,你能应对自如就行,但是被拆穿了会很尴尬,然后就找下一个吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务