题目
在不同位置起始搜索,采用dfs和回溯
class Solution {
public boolean exist(char[][] board, String word) {
if(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(search(board,i,j,word,0)) return true;
}
}
return false;
}
public boolean search(char[][] board,int i,int j,String word,int idx){
if(idx==word.length()) return true;
if(i<0||i>=board.length||j<0||j>=board[0].length||board[i][j]!=word.charAt(idx)){
return false;
}
char c = word.charAt(idx);
board[i][j] = '#';
boolean res = search(board,i-1,j,word,idx+1) || search(board,i+1,j,word,idx+1)
|| search(board,i,j-1,word,idx+1) || search(board,i,j+1,word,idx+1);
board[i][j] = c;
return res;
}
}