79. Word Search

来源:互联网 发布:音乐播放器软件 编辑:程序博客网 时间:2024/05/14 09:40
    public static boolean exist(char[][] board, String word) {        if(board == null || board.length == 0) {            return false;        }        boolean res = false;        for(int i = 0; i < board.length && !res; i++) {            for(int j = 0; j < board[0].length  && !res; j++) {                if(word.charAt(0) == board[i][j]){                    String temp = "";                    int[] path = new int[word.length()+1];                    res = justify(board,i,j,temp,word,path,0);                }            }        }        return res;    }    public static boolean justify(char[][] board, int rolStart, int colStart, String res,String word, int[] path, int count) {        if(count>0 && word.charAt(count) != board[rolStart][colStart]) {            return false;        }        for(int i = 0; i < count; i++) {            if(path[i] == (rolStart * board[0].length+colStart)) {                return false;            }        }        path[count++] = rolStart * board[0].length+colStart;        res += board[rolStart][colStart];        if(res.equals(word)) {            return true;        }else if(res.length() < word.length()) {            boolean b1 = false;            boolean b2 = false;            boolean b3 = false;            boolean b4 = false;            boolean succ = b1;            if(!succ && colStart+1 < board[0].length) {                b1 = justify(board,rolStart,colStart+1,res,word,path,count);            }            succ = b1;            if(!succ && colStart-1>=0) {                b2 = justify(board,rolStart,colStart-1,res,word,path,count);            }            succ = b1 || b2;            if(!succ && rolStart-1 >=0) {                b3 = justify(board,rolStart-1,colStart,res,word,path,count);                }            succ = b1 || b2 || b3;            if(!succ && rolStart+1 < board.length) {                b4 = justify(board,rolStart+1,colStart,res,word,path,count);            }            return b1 || b2 || b3 || b4;        }else {            return false;        }    }
0 0