回溯
class Solution {
int[][] visited;
public boolean exist(char[][] board, String word) {
int col = board[0].length;
int row = board.length;
visited = new int[row][col];
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(find(board,i,j,word,0)){
return true;
}
}
}
return false;
}
public boolean find(char[][] board,int row,int col,String word,int index){
if(index == word.length()){
return true;
}
if(row<0 || col <0 || row >= board.length || col >= board[0].length || visited[row][col] == 1){
return false;
}
if(board[row][col] != word.charAt(index)){
return false;
}
visited[row][col] = 1;
if(find(board,row-1,col,word,index+1)) return true;
if(find(board,row,col+1,word,index+1)) return true;
if(find(board,row+1,col,word,index+1)) return true;
if(find(board,row,col-1,word,index+1)) return true;
visited[row][col] = 0;
return false;
}
}