zoukankan      html  css  js  c++  java
  • 79. Word Search

    一、题目

      1、审题

      

      2、 分析

        给出一个二维的字符数组 board,一个字符串 word;在 board 中可以向左右、上下延伸,判断 word 是否可以在延伸中找到。其中 board 中每个字符只能用一次。

    二、解答

      1、思路:

        运用递归的思想进行实现。

        开辟一个二维数组的空间用于记录该字符是否被使用。

    class Solution {
        public boolean exist(char[][] board, String word) {
            if(board == null)
                return false;
            int rows = board.length, cols = board[0].length;
            if(rows == 0 || cols == 0 || rows*cols < word.length())
                return false;
            
            boolean[][] isUsed = new boolean[rows][cols];
            for (int row = 0; row < rows; row++) {
                for (int col = 0; col < cols; col++) {
                    if(exist(board, row, col, word.toCharArray(), isUsed, 0))
                        return true;
                }
            }
            return false;
        }
        
        private boolean exist(char[][] board, int row, int col, char[] charArray, boolean[][] isUsed, int index) {
            
            if(index == charArray.length)
                return true;
            if(row < 0 || col < 0 ||
                    row == board.length || col == board[0].length)
                return false;
            
            if(isUsed[row][col] || board[row][col] != charArray[index])
                return false;
            
            isUsed[row][col] = true;
            boolean isExist = exist(board, row, col+1, charArray, isUsed, index+1)
                    || exist(board, row, col-1, charArray, isUsed, index+1)
                    || exist(board, row+1, col, charArray, isUsed, index+1)
                    || exist(board, row-1, col, charArray, isUsed, index+1);
            isUsed[row][col] = false;
            
            return isExist;
        }
    }
  • 相关阅读:
    CSS——实现图像远距离翻转效果
    《精通CSS》一个下拉菜单的例子
    将博客搬至CSDN
    44个Java代码性能优化总结
    QRCode 二维码生成
    Linux命令
    spring
    ajax 学习总结
    Servlet+Ajax实现搜索框智能提示代码
    搜索框智能提示
  • 原文地址:https://www.cnblogs.com/skillking/p/9692342.html
Copyright © 2011-2022 走看看