Word Search
board =
[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
]
Given word = "ABCCED", return true.
Given word = "SEE", return true.
Given word = "ABCB", return false.class Solution {
public boolean exist(char[][] board, String word) {
if(board == null || board.length == 0 || board[0].length == 0)
return false;
for(int i = 0; i < board.length;i++){
for(int j = 0; j < board[0].length;j++){
if(exist(board,i,j,word,0 )){
return true;
}
}
}
return false;
}
public boolean exist(char[][] board, int i, int j, String word, int start){
if(start >= word.length()) return true;
if(i < 0 || i >= board.length || j < 0 || j >= board[0].length){
return false;
}
if(board[i][j] == word.charAt(start++)){
char c =board[i][j];
board[i][j] = '#';
boolean res = exist(board,i+1,j,word,start) ||
exist(board,i-1,j,word, start)||
exist(board,i,j+1,word, start)||
exist(board,i,j-1,word,start);
board[i][j] = c;
return res;
}
return false;
}
}Last updated