1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| class Solution { public boolean exist(char[][] board, String word) { if(word.length()>board.length*board[0].length) return false; for(int i=0;i<board.length;i++) for(int j=0;j<board[0].length;j++){ if(board[i][j]==word.charAt(0)) { boolean[][] visited=new boolean[board.length][board[0].length]; visited[i][j]=true; boolean temp=help(i,j,board,word,0,visited); if(temp) return true; } } return false; } public boolean help(int i,int j,char[][] board,String word,int num,boolean[][] visited){ if(i<0||i>board.length||j<0||j>board[0].length||word.charAt(num)!=board[i][j]) return false; if(num+1==word.length()) return true; boolean t1,t2,t3,t4; t1=t2=t3=t4=false; if(i-1>=0&& board[i-1][j]==word.charAt(num+1)&&visited[i-1][j]==false) { visited[i-1][j]=true; if(t1=help(i-1,j,board,word,num+1,visited)) return true; visited[i-1][j]=false; } if(j+1<board[0].length&&board[i][j+1]==word.charAt(num+1)&&visited[i][j+1]==false) { visited[i][j+1]=true; if(t2=help(i,j+1,board,word,num+1,visited)) return true; visited[i][j+1]=false; } if(i+1<board.length&&board[i+1][j]==word.charAt(num+1)&&visited[i+1][j]==false) { visited[i+1][j]=true; if(t3=help(i+1,j,board,word,num+1,visited)) return true; visited[i+1][j]=false; } if(j-1>=0&& board[i][j-1]==word.charAt(num+1)&&visited[i][j-1]==false){ visited[i][j-1]=true; if(t4=help(i,j-1,board,word,num+1,visited)) return true; visited[i][j-1]=false; } return false; } }
|