zoukankan      html  css  js  c++  java
  • leetcode——79.单词搜索

    这道题自己完成的,不难。

    回溯。

    public boolean exist(char[][] board, String word) {
            int m = board.length;
            int n = board[0].length;
            int wordLength = word.length();
            if(word.length()>m*n){
                return false;
            }
            boolean[][] b = new boolean[m][n];
            for(int i = 0;i<m;i++){
                for(int j = 0;j<n;j++){
                    if(board[i][j] == word.charAt(0)){
                        b[i][j] = true;
                        if(find(board,b,word,i,j,1,m,n,wordLength)){
                            return true;
                        }
                        b[i][j] = false;
                    }
                }
            }
            return false;
        }
    
        private boolean find(char[][] board, boolean[][] b, String word, int i, int j, int k, int m, int n, int wordLength) {
            if(k == wordLength){
                return true;
            }
            if(i+1<m){
                if(!b[i+1][j] && board[i+1][j] == word.charAt(k)){
                    b[i+1][j] = true;
                    if(find(board, b, word, i+1, j, k+1, m, n, wordLength)){
                        return true;
                    }
                    b[i+1][j] = false;
                }
            }
            if(i-1>=0){
                if(!b[i-1][j] && board[i-1][j] == word.charAt(k)){
                    b[i-1][j] = true;
                    if(find(board, b, word, i-1, j, k+1, m, n, wordLength)){
                        return true;
                    }
                    b[i-1][j] = false;
                }
            }
            if(j+1<n){
                if(!b[i][j+1] && board[i][j+1] == word.charAt(k)){
                    b[i][j+1] = true;
                    if(find(board, b, word, i, j+1, k+1, m, n, wordLength)){
                        return true;
                    }
                    b[i][j+1] = false;
                }
            }
            if(j-1>=0){
                if(!b[i][j-1] && board[i][j-1] == word.charAt(k)){
                    b[i][j-1] = true;
                    if(find(board, b, word, i, j-1, k+1, m, n, wordLength)){
                        return true;
                    }
                    b[i][j-1] = false;
                }
            }
            return false;
        }

    待优化。

     ——2020.6.30

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    axios的使用/
    jQuery好玩的双向控制轮播
    vue的路由跳转方式/两种
    vfor的某些注意事项
    vue使用插件时不能撑满页面?
    swiper中的双向控制器不生效问题
    sass的安装及使用
    .net必懂题
    软件架构初读01
    EJB
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13212525.html
Copyright © 2011-2022 走看看