中产阶级
- 积分
- 16159
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-12-20
- 最后登录
- 1970-1-1
|
- public class Solution {
- public boolean exist(char[][] board, String word) {
- if(board.length==0||word.equals("")) return false;
- Set<String> curr = new HashSet<String>();
- for(int i = 0;i<board.length;i++){
- for(int j =0;j<board[0].length;j++){
- if(helper(board,i,j,word,0,curr)) return true;
- }
- }
- return false;
- }
- public boolean helper(char[][] board, int i, int j, String word, int start, Set<String> curr){
- if(board[i][j]!=word.charAt(start)) return false;
- else if(start==word.length()-1&&board[i][j]==word.charAt(start)) return true;
- else{
- curr.add(String.valueOf(i)+" "+String.valueOf(j));
- boolean neighbor = false;
- if(i-1>=0&&!curr.contains(String.valueOf(i-1)+" "+String.valueOf(j))) neighbor = helper(board,i-1,j,word,start+1,curr);
- if(neighbor) return true;
- if(i+1<=board.length-1&&!curr.contains(String.valueOf(i+1)+" "+String.valueOf(j))) neighbor = helper(board,i+1,j,word,start+1,curr);
- if(neighbor) return true;
- if(j-1>=0&&!curr.contains(String.valueOf(i)+" "+String.valueOf(j-1))) neighbor = helper(board,i,j-1,word,start+1,curr);
- if(neighbor) return true;
- if(j+1<=board[0].length-1&&!curr.contains(String.valueOf(i)+" "+String.valueOf(j+1))) neighbor = helper(board,i,j+1,word,start+1,curr);
- if(neighbor) return true;
- curr.remove(String.valueOf(i)+" "+String.valueOf(j));
- return false;
- }
- }
- }
复制代码 这样更直接 |
|