HTML視窗的前進和後退
阿新 • • 發佈:2020-12-21
技術標籤:LeetCode--medium
給定一個二維網格和一個單詞,找出該單詞是否存在於網格中。
單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重複使用。
示例:
board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] 給定 word = "ABCCED", 返回 true 給定 word = "SEE", 返回 true 給定 word = "ABCB", 返回 false
提示:
board
和word
中只包含大寫和小寫英文字母。1 <= board.length <= 200
1 <= board[i].length <= 200
1 <= word.length <= 10^3
程式碼實現:
class Solution { public boolean exist(char[][] board, String word) { int row = board.length; int column = board[0].length; boolean[][] visited = new boolean[row][column]; for (int i = 0; i < row; i++) { Arrays.fill(visited[i], false); } for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { if (digui(board, word, visited, i, j, 0)) { return true; } } } return false; } public boolean digui(char[][] board, String word, boolean[][] visited, int row, int column, int index) { if (row < 0 || row >= board.length || column < 0 || column >= board[0].length || visited[row][column]) { return false; } if(board[row][column] == word.charAt(index)) { visited[row][column] = true; if(index == word.length() - 1) { return true; } else { index++; } } else { return false; } boolean result = digui(board, word, visited, row + 1, column, index) || digui(board, word, visited, row - 1, column, index)|| digui(board, word, visited, row, column + 1, index)|| digui(board, word, visited, row, column - 1, index); visited[row][column] = false; return result; } }