给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) 。棋盘上空格用 ‘.’ 表示,白色格子用 ‘W’ 表示,黑色格子用 ‘B’ 表示。

游戏中每次操作步骤为:选择一个空格子,将它变成你正在执行的颜色(要么白色,要么黑色)。但是,合法 操作必须满足:涂色后这个格子是 好线段的一个端点 (好线段可以是水平的,竖直的或者是对角线)。

好线段 指的是一个包含 三个或者更多格子(包含端点格子)的线段,线段两个端点格子为 同一种颜色 ,且中间剩余格子的颜色都为 另一种颜色 (线段上不能有任何空格子)。你可以在下图找到好线段的例子:

给你两个整数 rMove 和 cMove 以及一个字符 color ,表示你正在执行操作的颜色(白或者黑),如果将格子 (rMove, cMove) 变成颜色 color 后,是一个 合法 操作,那么返回 true ,如果不是合法操作返回 false 。

  • 示例 1:

输入:board = [[".",".",".",“B”,".",".",".","."],[".",".",".",“W”,".",".",".","."],[".",".",".",“W”,".",".",".","."],[".",".",".",“W”,".",".",".","."],[“W”,“B”,“B”,".",“W”,“W”,“W”,“B”],[".",".",".",“B”,".",".",".","."],[".",".",".",“B”,".",".",".","."],[".",".",".",“W”,".",".",".","."]], rMove = 4, cMove = 3, color = “B”
输出:true
解释:’.’,‘W’ 和 ‘B’ 分别用颜色蓝色,白色和黑色表示。格子 (rMove, cMove) 用 ‘X’ 标记。
以选中格子为端点的两个好线段在上图中用红色矩形标注出来了。

  • 示例 2:

输入:board = [[".",".",".",".",".",".",".","."],[".",“B”,".",".",“W”,".",".","."],[".",".",“W”,".",".",".",".","."],[".",".",".",“W”,“B”,".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",“B”,“W”,".","."],[".",".",".",".",".",".",“W”,"."],[".",".",".",".",".",".",".",“B”]], rMove = 4, cMove = 4, color = “W”
输出:false
解释:虽然选中格子涂色后,棋盘上产生了好线段,但选中格子是作为中间格子,没有产生以选中格子为端点的好线段。

提示:

board.length == board[r].length == 8
0 <= rMove, cMove < 8
board[rMove][cMove] == ‘.’
color 要么是 ‘B’ 要么是 ‘W’ 。

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

解题思路

根据rMove 和 cMove 以及color,从board[rMove][cMove]向8个方向遍历,当出现遍历到空格子的情况,就不是合法的,或者当遍历到出现color的格子,但是线段中间没有别的颜色,那么也不是合法。

代码

class Solution {int[][] dir=new int[][]{{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}};public boolean checkMove(char[][] board, int rMove, int cMove, char color) {for (int[] d : dir) {int x=rMove+d[0],y=cMove+d[1],len=0;boolean flag=false;while (x>=0&&x<8&&y>=0&&y<8){if (board[x][y]=='.'){break;}if (board[x][y]==color){if (len>=1)return true;break;}x=x+d[0];y=y+d[1];len++;}}return false;}
}

5827. 检查操作是否合法相关推荐

  1. Leetcode周赛5827. 检查操作是否合法

    题目描述 给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) .棋盘上空格用 '.' 表示,白色格子用 'W' 表示,黑色格子 ...

  2. LeetCode 1958. 检查操作是否合法(模拟)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) . 棋盘上空格用 '.' 表 ...

  3. Problem A: 判断操作是否合法(栈和队列)

    Problem A: 判断操作是否合法(栈和队列) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 67  Solved: 22 Description ...

  4. 入栈和出栈操作的合法序列判定

    入栈和出栈操作的合法序列判定 [问题描述]假设以I和O分别表示入栈和出栈操作,栈的初态和终态均为空.入栈和出栈的操作序列表示为仅由I和O组成的序列.请编写程序判断一个给定序列是否合法. [输入形式]给 ...

  5. C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因。电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非“0“或”1”

    一.题目:C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因.电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非"0& ...

  6. Python代码:检查学号是否合法

    学号某学校设计的学号由8位数字组成,其中开头两位数字是2和0,第3位和第4位数字是18.19或20,请编写程序判断某学号是否合法. StuID = input("请输入学号:") ...

  7. python3 ipaddress模块 创建 检查 操作ip地址 简介

    目录 1.创建地址对象--ipaddress.ip_address()函数 2.定义ip网络--ipaddress.ip_network()函数 3.查看网络中独立地址个数 4.打印主机地址 5.获取 ...

  8. 汉诺塔(三) 判断操作是否合法 + 栈(stack)数组

    题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=93 汉诺塔(三) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 ...

  9. LeetCode 第 58 场力扣夜喵双周赛(动态规划、马拉车算法,前后缀处理)/ 第 253 场力扣周赛(贪心,LIS)

    第 58 场力扣夜喵双周赛 两道600多 5193. 删除字符使字符串变好 题目描述 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 ...

最新文章

  1. js获取Html元素的实际宽度高度
  2. jenkins中配置Ant
  3. Node.js包管理器Yarn的入门介绍与安装
  4. Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
  5. dp 树状数组 逆序元组
  6. 克隆对象和对象的继承
  7. HDU2602(背包)
  8. Use __doPostBack() As A Bridge
  9. fiddler响应中文乱码问题
  10. 顶级论文创新点怎么找?中国高校首次获CVPR最佳学生论文奖有感
  11. win10下点击开始菜单没响应的解决方案
  12. 大数据再出发-19Flink
  13. ini 文件 使用说明
  14. 夏普电视的html接口,夏普电视投屏设置方法
  15. 常用的设计模式(七)——门面设计模式
  16. R3DS Wrap基本使用方法
  17. 【科普】精度和分辨率的区别与联系
  18. L298N 驱动电机与单片机的线路连接图
  19. OPENWRT/LEDE编译教程
  20. Android PackageManager 基本使用

热门文章

  1. 【计算机系统设计】实践笔记(3)改进数据通路:移位R型指令分析
  2. lambda 表达式定制操作
  3. 【Leetcode | 52】257. 二叉树的所有路径
  4. 文件操作相关的系统函数
  5. java开发工程师工作内容怎么写
  6. 运维工程师如果将web服务http专变为https
  7. python word
  8. 【mysql】Innodb三大特性之double write
  9. 从简单的信道预计说起
  10. Windows XP和Windows 7双系统安装和启动菜单修复