79 Word Search
方法:
对矩阵中的每一个字符做递归比较,每比较一个字符将该字符置为‘$’,以防止该字符被第二次比较。递归程序注意结束递归的条件。
代码:
public class Solution {
public boolean exist(char[][] board, String word) {
if(board == null || board.length == 0 || word == null || word.length() == 0)return false;
int row = board.length;
int col = board[0].length;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(match(board, i, j, word, 0)){
return true;
}
}
}
return false;
}
private boolean match(char[][] board, int i, int j, String word, int index) {
int row = board.length;
int col = board[0].length;
if(index == word.length())return true;
if(i < 0 || j < 0 || i == row || j == col)return false;
if(board[i][j] != word.charAt(index))return false;
char tmp = board[i][j];
board[i][j] = '$';
boolean exists = match(board, i-1, j, word, index + 1) ||
match(board, i + 1, j, word, index + 1) ||
match(board, i, j - 1, word, index + 1) ||
match(board, i, j + 1, word, index + 1);
board[i][j] = tmp;
return exists;
}
}