zoukankan      html  css  js  c++  java
  • Word Search

    package cn.edu.xidian.sselab.array;
    /**
     * title: Word Search
     * content:
     *Given a 2D board and a word, find if the word exists in the grid.
     *The word can be constructed from letters of sequentially adjacent cell,
     *where "adjacent" cells are those horizontally or vertically neighboring.
     * The same letter cell may not be used more than once.
     * For example,
     * Given board =
     *
     * [
     *   ['A','B','C','E'],
     *  ['S','F','C','S'],
     *   ['A','D','E','E']
     * ]

     * word = "ABCCED", -> returns true,
     * word = "SEE", -> returns true,
     * word = "ABCB", -> returns false.
     */
    public class WordSearch {

        //这个题就像是玩贪吃蛇的游戏,抓住重点,关键点就是如何构造递归函数,以及什么时候返回值
        //这个题目还有一个难点是,每个点不能重复使用,也就是说每个判断过正确的点,判断下一个节点的时候,这个值不能用,可以随便赋个值
        //只要保证他的判断返回是false就可以
        public boolean exist(char[][] board, String word) {
            int totalLen = board.length;
            int sigleLen = board[0].length;
            for(int i=0;i<totalLen;i++){
                for(int j=0;j<sigleLen;j++){
                    if(exists(board,i,j,word,0)){
                        return true;
                    }
                }
            }
            return false;
       }
        
        private boolean exists(char[][]board,int i,int j,String word,int temp){
            if(temp == word.length())
                return true;
            if(i<0 || j<0 || i == board.length|| j == board[0].length || board[i][j] != word.charAt(temp))
                return false;
            board[i][j] = '*';
            boolean result = exists(board,i-1,j,word,temp+1)||
                     exists(board,i+1,j,word,temp+1)||
                     exists(board,i,j-1,word,temp+1)||
                     exists(board,i,j+1,word,temp+1);
            board[i][j] = word.charAt(temp);
            return result;
        }

    }

  • 相关阅读:
    记录一下自己的洛谷的题解
    初学java 学生管理系统——v0002版本
    初学java 学生管理系统——v0001版本
    Redis守护进程作用+数据类型
    java实现发送短信验证码
    Kali入侵入门版笔记!!!
    2020实现ssh公网外联和外网远程穿透以及内网穿透防火墙
    监控键盘和鼠标记录内容和截屏,更新版本2.0,增加了Linux服务端!!!
    Git管理软件开发项目入门版
    2020年Windows下开机自动执行最强
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/4951607.html
Copyright © 2011-2022 走看看