Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Solution {
- private static final int[][] DELTA_DIMS = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
- /**
- * @param board: A list of lists of character
- * @param word: A string
- * @return: A boolean
- */
- public boolean exist(char[][] board, String word) {
- if(word == null) {
- return false;
- }
- int m = (board == null) ? 0 : board.length;
- int n = (m == 0) ? 0 : board[0].length;
- for(int i = 0; i < m; i++) {
- for(int j = 0; j < n; j++) {
- if(exist(board, i, j, word, 0)) {
- return true;
- }
- }
- }
- return false;
- }
- private boolean exist(char[][] board, int x, int y, String word, int wordI) {
- if(wordI == word.length()) {
- return true;
- }
- if(wordI > word.length()) {
- return false;
- }
- if(!inBound(board, x, y)) {
- return false;
- }
- if(board[x][y] != word.charAt(wordI)) {
- return false;
- }
- char origChar = board[x][y];
- board[x][y] = 0;
- for(int[] deltaDim : DELTA_DIMS) {
- int nx = x + deltaDim[0];
- int ny = y + deltaDim[1];
- if(exist(board, nx, ny, word, wordI + 1)) {
- board[x][y] = origChar;
- return true;
- }
- }
- board[x][y] = origChar;
- return false;
- }
- private boolean inBound(char[][] board, int x, int y) {
- int m = (board == null) ? 0 : board.length;
- int n = (m == 0) ? 0 : board[0].length;
- return x >= 0 && x < m &&
- y >= 0 && y < n;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment