题目链接: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;
}
}