classSolution{
int m =0;int n =0;boolean[][] visited;int[][] direct ={
{
0,1},{
0,-1},{
1,0},{
-1,0}};publicbooleanexist(char[][] board,String word){
m = board.length;
n = board[0].length;
visited =newboolean[m][n];for(int i =0; i < m; i++){
for(int j =0; j < n; j++){
//起点如果不是word的首字符,那就跳过当前位置,不从这里开始遍历if(board[i][j]!= word.charAt(0)){
continue;}//如果从(i,j)开始遍历能找到word在网络中,则返回true;否则继续从头开始遍历if(findWord(board, word, i, j,0, visited)){
returntrue;}}}returnfalse;}privatebooleanfindWord(char[][] board,String word,int i,int j,int cur,boolean[][] visited){
//如果cur指针越界了,则证明已经找到与word匹配的所有字符了if(cur == word.length()){
returntrue;}//i和j如果越界则返回falseif(i <0|| j <0|| i >= m || j >= n){
returnfalse;}//如果当前网络字符不等于word的第cur个字符//或者当前字符已经被访问,则false (防止出现A-> B,B继续四个方向遍历时,又回退导致遍历了两次A)if(board[i][j]!= word.charAt(cur)|| vis