LC 79 Word Search(M)
解题思路 Recursive, DFS
public boolean exist(char[][] board, String word) {
for(int row = 0; row<board.length; row++)
for(int col = 0; col<board[0].length; col++){
if(isMatch(board, row, col, word, 0))
return true;
}
return false;
}
public boolean isMatch(char[][] board, int row, int col, String word, int index){
if(index >= word.length())
return true;
if(row<0 || col<0 || row>=board.length || col>=board[0].length || board[row][col] != word.charAt(index))
return false;
char temp = board[row][col];
board[row][col] = '$'; //改为无效值,表示已经访问过
index++;
boolean res =(isMatch(board, row-1, col, word, index) || isMatch(board, row, col-1, word, index) ||
isMatch(board, row+1, col, word, index) || isMatch(board, row, col+1, word, index));
board[row][col] = temp;// 探测完后,恢复
return res;
}Last updated