79. 单词搜索

package leetcode;

public class demo_79 {
    //全局变量,如果找到就返回
    int flag=0;
    public boolean exist(char[][] board, String word) {
        int[][] visited=new int[board.length][board[0].length];
        for(int i=0;i<board.length;i++) {
            for(int j=0;j<board[0].length;j++) {
                visited[i][j]=0;
            }
        }
        for(int i=0;i<board.length;i++) {
            for(int j=0;j<board[0].length;j++) {
                backtrack(board, visited, word, i, j, 0);
                if(flag==1) {return true;}
            }
        }
        return false;
    }
    public void backtrack(char[][] board,int[][] visited,String word,int i,int j,int index) {
        if(board[i][j]==word.charAt(index)) {
            if(visited[i][j]==0) {
                //记录当前位置是否被访问过
                visited[i][j]=1;
                //满足条件,则返回
                if(index==word.length()-1) {flag=1;return;}
                if(index<word.length()-1) {
                    //向左搜索
                    if(flag==0&&i-1>-1) {backtrack(board, visited, word, i-1, j, index+1);}
                    //向右搜索
                    if(flag==0&&i+1<board.length) {backtrack(board, visited, word, i+1, j, index+1);}
                    //向上搜索
                    if(flag==0&&j-1>-1) {backtrack(board, visited, word, i, j-1, index+1);}
                    //向下搜索
                    if(flag==0&&j+1<board[0].length) {backtrack(board, visited, word, i, j+1, index+1);}
                }
                visited[i][j]=0;
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_79 d79=new demo_79();
        char[][] board= {{‘A‘,‘B‘,‘C‘,‘E‘},{‘S‘,‘F‘,‘C‘,‘S‘},{‘A‘,‘D‘,‘E‘,‘E‘}};
        String word="ABCCED";
        System.out.println(d79.exist(board, word));
    }

}

 

79. 单词搜索

上一篇:遍历part表达式,UF_MODL_ask_exps_of_part


下一篇:JMeter 阶梯式加压测试插件 Stepping Thread Group