0
点赞
收藏
分享

微信扫一扫

单词搜索

彪悍的鼹鼠 2021-09-21 阅读 37
今日算法
题目描述:

思路:

实现:

class Solution {
    int m = 0;
    int n = 0;

    boolean flag = false;
    public boolean exist(char[][] board, String word) {
        m = board.length;
        n = board[0].length;
        
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (flag) {
                    return flag;
                }
                if (word.charAt(0) == board[i][j]) {
                    dfs(board, word, 0, i, j);
                }
            }
        }
        return flag;
    }
    public void dfs(char[][] board, String word, int index, int start, int end) {
         if (index == word.length()) {
            flag = true;
            return;
        }
        if (start < 0 || end < 0 || start >= m || end >= n) {
            return;
        }
        if (board[start][end] == '*') {
            return;
        }
      
        if (word.charAt(index) == board[start][end]) {
            char temp = board[start][end];
            board[start][end] = '*';
            dfs(board, word, index + 1, start + 1, end);
            dfs(board, word, index + 1, start - 1, end);
            dfs(board, word, index + 1, start, end + 1);
            dfs(board, word, index + 1, start, end - 1);
            board[start][end] = temp;
        }
       
    }
}
举报

相关推荐

0 条评论