dfs
import java.util.*;
public class Solution {
boolean flag;
boolean[][] visited;
public boolean hasPath (char[][] matrix, String word) {
visited = new boolean[matrix.length][matrix[0].length];
flag = false;
for(int i = 0;i<matrix.length;i++){
for(int j = 0;j<matrix[0].length;j++){
if(word.charAt(0) == matrix[i][j]){
dfs(matrix,word,0,i,j);
if(flag == true){
return true;
}
}
}
}
return false;
}
private void dfs(char[][] matrix,String word,int index,int i,int j){
if(word.charAt(index) == matrix[i][j] && visited[i][j] == false){
visited[i][j] = true;
if(index == word.length()-1){
flag = true;
return;
}
if(i-1>=0){
dfs(matrix,word,index+1,i-1,j);
}
if(j+1<matrix[0].length){
dfs(matrix,word,index+1,i,j+1);
}
if(i+1<matrix.length){
dfs(matrix,word,index+1,i+1,j);
}
if(j-1>=0){
dfs(matrix,word,index+1,i,j-1);
}
visited[i][j] = false;
}
}
}