成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【Leetcode】79.單詞搜索

ruicbAndroid / 1750人閱讀

摘要:題目給定一個二維網(wǎng)格和一個單詞,找出該單詞是否存在于網(wǎng)格中。單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中相鄰單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許被重復(fù)使用。

題目

給定一個二維網(wǎng)格和一個單詞,找出該單詞是否存在于網(wǎng)格中。

單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許被重復(fù)使用。

示例:

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

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

題解

這個題目拿到題目就應(yīng)該能想到是用DFS的題目,因為這完完全全就是DFS,沒有做任何的變形,關(guān)于DFS,這里就不重復(fù)講解。

推薦一個b站上的視頻,不熟悉的同學(xué)可以回顧一下。

https://www.bilibili.com/vide...

熟悉的同學(xué)直接看代碼吧

java
class Solution {
    public boolean exist(char[][] board, String word) {
        if (word == null || word.length() == 0) {
            return true;
        }
        char[] chs = word.toCharArray();
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if (dfs(board, chs, 0, i, j)) {
                    return true;
                }
            }
        }
        return false;
    }

    private boolean dfs(char[][] board, char[] words, int index, int x, int y) {
        if (index == words.length) {
            return true;
        }
        if (x < 0 || x == board.length || y < 0 || y == board[0].length) {
            return false;
        }
        if (board[x][y] != words[index]) {
            return false;
        }
        char source = board[x][y];
        board[x][y] = "