publicclassSolution{int m;int n;boolean[][] vis;publicbooleanexist(char[][] board,String word){
m = board.length;
n = board[0].length;
vis =newboolean[m][n];// 也可以内置标记,不需要额外空间for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(dfs(board, i, j, word.toCharArray(),0)){returntrue;}}}returnfalse;}privatebooleandfs(char[][] board,int i,int j,char[] word,int index){if(i <0|| i >= m || j <0|| j >= n || index >= word.length || vis[i][j]|| word[index]!= board[i][j]){returnfalse;}if(index == word.length -1){returntrue;}
vis[i][j]=true;if(dfs(board, i -1, j, word, index +1)||dfs(board, i +1, j, word, index +1)||dfs(board, i, j -1, word, index +1)||dfs(board, i, j +1, word, index +1)){returntrue;}
vis[i][j]=false;returnfalse;}}
go
funcexist(board [][]byte, word string)bool{
m, n :=len(board),len(board[0])var dfs func(int,int,int)bool
dfs =func(i, j, index int)bool{if i >= m || j >= n || i <0|| j <0|| index >=len(word)|| board[i][j]!= word[index]{returnfalse}if index ==len(word)-1{returntrue}
temp := board[i][j]
board[i][j]=' 'ifdfs(i-1, j, index+1)||dfs(i+1, j, index+1)||dfs(i, j-1, index+1)||dfs(i, j+1, index+1){returntrue}
board[i][j]= temp
returnfalse}for i, row :=range board {for j :=range row {ifdfs(i, j,0){returntrue}}}returnfalse}
79. 单词搜索javapublic class Solution { int m; int n; boolean[][] vis; public boolean exist(char[][] board, String word) { m = board.length; n = board[0].length; vis = new boolean[m][n]; // 也可以内置标记,不需要额外空间 for (int i = 0; i < m; i+