• 5883. 判断单词是否能放入填字游戏内


    给你一个 m x n 的矩阵 board ,它代表一个填字游戏 当前 的状态。填字游戏格子中包含小写英文字母(已填入的单词),表示 空 格的 ' ' 和表示 障碍 格子的 '#' 。

    如果满足以下条件,那么我们可以 水平 (从左到右 或者 从右到左)或 竖直 (从上到下 或者 从下到上)填入一个单词:

    该单词不占据任何 '#' 对应的格子。
    每个字母对应的格子要么是 ' ' (空格)要么与 board 中已有字母 匹配 。
    如果单词是 水平 放置的,那么该单词左边和右边 相邻 格子不能为 ' ' 或小写英文字母。
    如果单词是 竖直 放置的,那么该单词上边和下边 相邻 格子不能为 ' ' 或小写英文字母。
    给你一个字符串 word ,如果 word 可以被放入 board 中,请你返回 true ,否则请返回 false 。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/check-if-word-can-be-placed-in-crossword
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    python。

    每一行和每一列的字符串按 '#' 分割为子串,判断每个子串是否匹配 word 或 word[::-1] 即可。

    class Solution:
        def placeWordInCrossword(self, board: List[List[str]], word: str) -> bool:
            for row in chain(board, zip(*board)):
                s = ''.join(row).replace(' ', '.');
                for ss in s.split('#'):
                    if len(ss) == len(word) and (re.match(ss, word) or re.match(ss, word[::-1])):
                        return True
            return False
    
  • 相关阅读:
    Android Zygote介绍
    Android binder介绍(下)
    Android binder介绍(上)
    Android init介绍(下)
    Android init介绍(上)
    Android 网络服务介绍
    Linux代理服务器使用
    Linux ALSA介绍
    ZigBee MAC层(下)
    ZigBee MAC层(上)
  • 原文地址:https://www.cnblogs.com/xgbt/p/15342866.html
Copyright © 2020-2023  润新知