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
|
HashSet<String> set = new HashSet<String>();
public boolean (char[][] board, String word) { for (int i = 0; i < word.length(); ++i) { set.add(word.substring(0, i + 1)); } for (int i = 0; i < board.length; ++i) { for (int j = 0; j < board[0].length; ++j) { if (board[i][j] == word.charAt(0)) { boolean[][] visited = new boolean[board.length][board[0].length]; if (dfs(board, "", i, j, visited , word)) return true; } } } return false; }
public boolean dfs(char[][] board, String path, int i, int j, boolean[][] visited, String target) { if (i < 0 || j < 0 || i >= board.length || j >= board[0].length) return false; if (visited[i][j]) return false; path += board[i][j]; if (set.contains(path) == false) return false; if (path.equals(target)) return true; visited[i][j] = true; if (dfs(board, path, i + 1, j, visited, target) || dfs(board, path, i - 1, j, visited, target) || dfs(board, path, i, j + 1, visited, target) || dfs(board, path, i, j - 1, visited, target)) return true; visited[i][j] = false; return false; }
|
近期评论