zoukankan      html  css  js  c++  java
  • 79. 单词搜索-洪泛/dfs-中等

    问题描述

    给定一个二维网格和一个单词,找出该单词是否存在于网格中。

    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

    示例:

    board =
    [
    ['A','B','C','E'],
    ['S','F','C','S'],
    ['A','D','E','E']
    ]

    给定 word = "ABCCED", 返回 true
    给定 word = "SEE", 返回 true
    给定 word = "ABCB", 返回 false
     

    提示:

    board 和 word 中只包含大写和小写英文字母。
    1 <= board.length <= 200
    1 <= board[i].length <= 200
    1 <= word.length <= 10^3

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/word-search

    解答

    class Solution {
        boolean flag;
        int len, row, col;
        public void flooding(char[][] board, String word, int x, int y, int idx){
            if(idx == len-1 && word.charAt(idx) == board[x][y])flag = true;
            if(board[x][y] == '.' || flag || word.charAt(idx) != board[x][y])return;
            else{
                char temp = board[x][y];
                board[x][y] = '.';
                if(x > 0)flooding(board, word, x-1, y, idx+1);
                if(x < row-1)flooding(board, word, x+1, y, idx+1);
                if(y > 0)flooding(board, word, x, y-1, idx+1);
                if(y < col-1)flooding(board, word, x, y+1, idx+1);
                board[x][y] = temp;
            }
        }
        public boolean exist(char[][] board, String word) {
            flag = false;
            len = word.length();
            if(len == 0)return true;
            row = board.length;
            if(row == 0)return false;
            col = board[0].length;
            for(int i=0;i<row && !flag;i++){
                for(int j=0;j<col && !flag;j++){
                    flooding(board, word, i, j, 0);
                }
            }
            return flag;
        }
    }
  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    C语言I学期总结
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13664282.html
Copyright © 2011-2022 走看看