zoukankan      html  css  js  c++  java
  • LeetCode 79. 单词搜索

    给定一个二维网格和一个单词,找出该单词是否存在于网格中。
    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。
    同一个单元格内的字母不允许被重复使用。

    示例:
    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

    class Solution:
        def exist(self, board: List[List[str]], word: str) -> bool:
            def helper(board, mark, i, j, word):
                if i < 0 or i >= len(board) or j < 0 or j>=len(board[0]):   ## 边界条件判断
                    return False
                if mark[i][j] is True:           ## 访问标记判断
                    return False 
                if board[i][j] != word[0]:       ## 判断字符匹配条件
                    return False
                else:
                    if len(word) == 1:  ## 结束递归判断
                        return True
                    else:
                        mark[i][j] = True          ## 标记为已访问
                        result = helper(board, mark, i+1,j,word[1:]) or 
                               helper(board, mark, i,j+1,word[1:]) or 
                               helper(board, mark, i-1,j,word[1:]) or 
                               helper(board, mark, i,j-1,word[1:]) 
                        mark[i][j] = False         ## 恢复未访问标记
                        return result
    
            mark = [[False for _ in range(len(board[0]))] for __ in range(len(board))]
            for i in range(len(board)):
                for j in range(len(board[0])):
                    result = helper(board,mark,i,j,word)
                    if result:
                        return True
            return result
    
  • 相关阅读:
    洛谷 P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L…
    测试 10.23
    洛谷 P3130 [USACO15DEC]计数haybalesCounting Haybales
    洛谷 P1985 翻转棋
    codevs 1019 集合论与图论
    6、trait特质、包别名、文件、private[this]
    -_-#Error
    -_-#【乱码】URL中文参数
    【bug】【userAgent】极速模式与非极速模式存在差异
    -_-#【模块】getElementsByClassName
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13287300.html
Copyright © 2011-2022 走看看