• 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;
        }
    }
  • 相关阅读:
    vue-cli3 set vue.config.js
    oracle 基本查询语句及实例
    输出流啊输入流
    java线程
    sql基础
    抽象类和接口
    重载和重写的区别
    简单的java面向对象计算器
    运算符的优先级
    隐式类型转换规则
  • 原文地址:https://www.cnblogs.com/skillking/p/9692342.html
Copyright © 2020-2023  润新知