1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| public class wordSearch {
public boolean exist(char[][] board, String word) { if (board == null || board[0].length == 0) return false; 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++) { if (board[i][j] == word.charAt(0)) { if (dfs(word, board, visited, m, n, i, j, 0)) { return true; } } } } return false; }
public boolean dfs(String word, char[][] board, boolean[][] visited, int m, int n, int i, int j, int index) { if (i < 0 || j < 0 || i >= m || j>=n || visited[i][j] || board[i][j]!=word.charAt(index)) return false; if (index == word.length()-1) return true; visited[i][j] = true;
boolean ans = dfs(word, board, visited, m, n, i+1, j, index+1) || dfs(word, board, visited, m, n, i-1, j, index+1) || dfs(word, board, visited, m, n, i, j+1, index+1) || dfs(word, board, visited, m, n, i, j-1, index+1) ; visited[i][j] = false; return ans; } }
|