classSolution{publicbooleanexist(char[][] board, String word){char[] words = word.toCharArray();for(int i =0; i < board.length; i++){for(int j =0; j < board[0].length; j++){if(dfs(board, words, i, j,0))returntrue;}}returnfalse;}booleandfs(char[][] board,char[] word,int i,int j,int k){if(i >= board.length || i <0|| j >= board[0].length || j <0|| board[i][j]!= word[k])returnfalse;if(k == word.length -1)returntrue;
board[i][j]='\0';boolean res =dfs(board, word, i +1, j, k +1)||dfs(board, word, i -1, j, k +1)||dfs(board, word, i, j +1, k +1)||dfs(board, word, i , j -1, k +1);
board[i][j]= word[k];return res;}}