zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    LruCache 原理
    线程间通信, 进程间通信
    安卓 权限 规则
    android 捕获所有异常 未捕获的异常
    serializable parcelable
    android intent 传递 二进制数据
    apk安装 卸载 原理
    ARGB 8888 内存大小
    dalvik 基于 jvm 的改进
    查看 MySQL 数据库中每个表占用的空间大小
  • 原文地址:https://www.cnblogs.com/xgbt/p/15342866.html
Copyright © 2011-2022 走看看