1、前言

2、思路
DFS 思路,只要有一个成功就是成功。
3、代码
class Solution {
public boolean exist(char[][] board, String word) {
if(board == null || board.length == 0 || word == null || word.length() == 0){
return false;
}
int m = board.length, n = board[0].length;
boolean[][] visited = new boolean[m][n];
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(board[i][j] == word.charAt(0) && dfs(board, i, j, word, 0, visited)){
return true;
}
}
}
return false;
}
private boolean dfs(char[][] board, int i, int j, String word, int index, boolean[][] visited) {
if(i < 0 || i >= board.length || j < 0 || j >= board[0].length || visited[i][j] || index == word.length() || word.charAt(index) != board[i][j]){
return false;
}
if(index == word.length() - 1){
return true;
}
visited[i][j] = true;
if(dfs(board, i - 1, j, word, index + 1, visited) || dfs(board, i + 1, j, word, index + 1, visited)
|| dfs(board, i, j - 1, word, index + 1, visited) || dfs(board, i, j + 1, word, index + 1, visited)){
return true;
}
visited[i][j] = false;
return false;
}
}
网友评论