class Solution {
public boolean exist(char[][] board, String word) {
int m = board.length;
int n = board[0].length;
boolean[][] visited = new boolean[m][n];
for(int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
boolean find = dfs(board, visited, i, j, word, 0);
if (find == true) return true;
}
}
return false;
}
public boolean dfs(char[][] board, boolean[][] visited, int i, int j, String word, int n) {
if (n >= word.length()) return true;
if (i >= 0 && i < board.length && j >=0 && j < board[0].length && board[i][j] == word.charAt(n) && visited[i][j] == false) {
visited[i][j] = true;
boolean a = dfs(board, visited, i-1, j, word, n+1);
boolean b = dfs(board, visited, i+1, j, word, n+1);
boolean c = dfs(board, visited, i, j-1, word, n+1);
boolean d = dfs(board, visited, i, j+1, word, n+1);
if (a || b || c || d) {
return true;
} else {
visited[i][j] = false;
return false;
}
}
return false;
}
}
注:
用dfs就可以。注意返回false的地方要把visited改回为false