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
|
class { public boolean exist(char[][] board, String word) { if(board == null || board.length == 0 || board[0] == null || board[0].length == 0) return false; char[] words = word.toCharArray(); int m = board.length, n = board[0].length; if(m * n < words.length) return false; for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { if(helper(board, i, j, words, 0)) return true; } } return false; } public boolean helper(char[][] board, int i, int j, char[] words, int start) { if(start == words.length) return true; if(i >= board.length || i < 0 || j >= board[0].length || j < 0) return false; if(board[i][j] != words[start]) return false; boolean exist = false; board[i][j] += 128; if(helper(board, i-1, j, words, start+1) || helper(board, i+1, j, words, start+1) || helper(board, i, j-1, words, start+1) || helper(board, i, j+1, words, start+1)) exist = true; board[i][j] -= 128; return exist; } }
|
近期评论