题解 | 单词搜索
单词搜索
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; } }