栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

示例 1:

输入:board = [["#", " ", "#"], [" ", " ", "#"], ["#", "c", " "]], word = "abc"
输出:true
解释:单词 "abc" 可以如上图放置(从上往下)。

class Solution {
public:
    bool placeWordInCrossword(vector>& board, string word) {
        for(int i=0;i0 && board[i][j-1]=='#') )
                    if(search(board,i,j,0,1,word))return true;
                if((j0 && board[i-1][j]=='#') || i==0 )
                    if(search(board,i,j,1,0,word))return true;
                if( (i>& board,int x,int y,int dx,int dy,string& word){
        for(int i=0;i=board.size() || y>=board[0].size())return false;
            if(board[x][y]==word[i] || board[x][y]==' '){
                x+=dx;
                y+=dy;
            }
            else return false;
        }
        if(x<0 || y<0 || x>=board.size() || y>=board[0].size())return true;
        if(board[x][y]==' ' || (board[x][y]>='a' && board[x][y]<='z'))return false;
        return true;
    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号