LeetCode #79 Word Search

题目

Word Search


解题方法

这题可以用深度优先遍历做,遍历数组,针对每一个位置判断是否为word中的当前字符,如果是,则先把当前字符暂时替换为特殊字符,然后对其前后左右四个方向分别搜索,直到word被搜完,或者ij越界,或者四个方向都不是word中当前字符,结束此次搜索。如果搜索到了word,则返回True。如果遍历结束仍然没有搜索到完整的word,返回False。


代码

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        if not board:
            return False
        
        for i in range(len(board)):
            for j in range(len(board[0])):
                if self.dfs(board, i, j, word):
                    return True
                
        return False
    
    def dfs(self, board, i, j, word):
        if not len(word):
            return True
        
        if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]) or word[0] != board[i][j]:
            return False
        
        temp = board[i][j]
        board[i][j] = "#"
        
        res = self.dfs(board, i - 1, j, word[1:]) or self.dfs(board, i + 1, j, word[1:]) or self.dfs(board, i, j - 1, word[1:]) or self.dfs(board, i, j + 1, word[1:])
        
        board[i][j] = temp
        return res
posted @ 2020-10-15 13:29  老鼠司令  阅读(80)  评论(0)    收藏  举报