图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)
一、题目
给你一个坐标 coordinates
,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。
如果所给格子的颜色是白色,请你返回 true
,如果是黑色,请返回 false
。
给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
二、示例
2.1> 示例 1:
【输入】coordinates = "a1"
【输出】false
【解释】如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。
2.2> 示例 2:
【输入】coordinates = "h3"
【输出】true
【解释】如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。
2.3> 示例 3:
【输入】coordinates = "c7"
【输出】false
提示:
- coordinates.length ==
2
- '
a
' <= coordinates[0] <= 'h
' - '
1
' <= coordinates[1] <= '8
'
三、解题思路
3.1> 采用异或方式
首先:针对题目中的棋盘,我们可以针对 行 和 列 ,做出如下假设性的拆分
操作:
【棋盘中列的假设】:
a列
白色、b列
黑色、c列
白色、d列
黑色……
【棋盘中行的假设】:1行
黑色、2行
白色、3行
黑色、4行
白色……
然后,我们再观察棋盘中的格子,发现如下规律:
【规律1:白色 + 黑色 = 黑色】
以a1
为例,此格子是黑色的,由于这个格子是由a列+1行组成,即:a列(白色) + 1行(黑色) = a1(黑色)
;
【规律2:白色 + 白色 = 白色】
以a2
为例,此格子是白色的,由于这个格子是由a列+2行组成,即:a列(白色) + 2行(白色) = a2(白色)
;
【规律3:黑色 + 黑色 = 白色】
以b1
为例,此格子是白色的,由于这个格子是由b列+1行组成,即:b列(黑色) + 1行(黑色) = b1(白色)
;
最后,我们发现这种规律与 异或操作 是一样的,即:白色用0表示,黑色用1表示:
【规律1:白色 + 黑色 = 黑色】0^1等于1
【规律2:白色 + 白色 = 白色】0^0等于0
【规律3:黑色 + 黑色 = 白色】1^1等于0
所以,我们只需要将coordinates指定的行和列转换为0或1,然后计算异或即可。
3.2> 采用奇偶方式
我们以a1
格子为例,a的ASCII码为97
,1的ASCII码为49
,那么ASCII(a) + ASCII(1) = 97 + 49 = 146,那么当总和是偶数
时,则格子是黑色
;如果总和是奇数
时,则格子是白色
。
此处就不再画图赘述了。
四、代码实现
4.1> 采用异或方式
class Solution {public boolean squareIsWhite(String coordinates) { // 白色用0表示,黑色用1表示int letter = (coordinates.charAt(0) - 'a') % 2; // a列:白色 b列:黑色 c列:白色 ……int number = (coordinates.charAt(1) - '1' + 1) % 2; // 1行:黑色 2行:白色 3行:黑色 ……return (letter ^ number) == 0; }
}
4.2> 采用奇偶方式
class Solution {public boolean squareIsWhite(String coordinates) {return (coordinates.charAt(0) + coordinates.charAt(1)) % 2 == 1; // 白色用奇数表示,黑色用偶数表示}
}
今天的文章内容就这些了:
写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。
更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」
图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)相关推荐
- LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色
文章目录 1. 题目 2. 解题 1. 题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
- LeetCode简单题之判断国际象棋棋盘中一个格子的颜色
题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false ...
- 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...
- 国际象棋棋盘64个格子能容纳多少粒米
问题:国际象棋盘中,第1 格放1 粒米,第2 格放2 粒米,第3格放4 粒米,第4 格放8 粒米,第5 格放16粒米,--问:64个格子总共可以放多少粒米? ''' 功能:用米粒来填充64格国际象棋棋 ...
- html 中一个格子拆分成两个_一个效果惊人的数字游戏
安爸曾多次讲过数学推理能力对孩子成长的重要性,听到有位家长说自己用扔骰子的方法教孩子数学等式.步骤大致是扔骰子时,如果骰子是3,就在棋盘上从0出发走3步,并且写出0+3=3的加法等式.扔到负数就后退, ...
- 图解LeetCode——768. 最多能完成排序的块 II(难度:困难)
一.题目 这个问题和"最多能完成排序的块"相似,但给定数组中的元素可以重复,输入数组最大长度为2000,其中的元素最大为10**8. arr是一个可能包含重复元素的整数数组,我们将 ...
- 查询屏幕中一个已知颜色的值
1.登录微信网页版,快捷键打开微信截图(ctrl+A),对颜色所在的区域进行截图,将鼠标停放在颜色上面,就会有颜色值,如图: 2.可以知道所选中的颜色值为RGB:(199.21.133),这是一个十进 ...
- Python实验一:创建数组并进行运算、创建一个国际象棋棋盘
目录 一.题目描述 1.创建数组并进行运算 2.创建一个国际象棋棋盘 二.实现代码: 1.创建数组并进行运算 2.创建一个国际象棋棋盘 一.题目描述 1.创建数组并进行运算 (1).创建一个数值范围为 ...
最新文章
- Java项目:在线考试系统(java+springboot+vue+jsp+mysql+maven)
- java 反射 动态代理
- java代码中添加事务_C#和JAVA中编写事务代码
- C语言函数调用一般分,C语言调用声明函数
- 计算机面试数据库基本知识,面试基础知识集合(python、计算机网络、操作系统、数据结构、数据库等杂记)...
- 现在的网盘对开发都极度不友好
- melogin.cn主页登录_melogin.cn登录官网
- php定义浏览器编码,从php脚本到浏览器,编码方式浅析
- div+css总结—FF下div不设置…
- 我的世界java版游戏图标_minecraftpe JAVA版游戏包mod
- IE8 访问https安全证书错误;导航阻止 解决办法
- java 抓图程序的实现
- 游戏中的网络同步机制——Lockstep(转载)
- 力扣(647.516)补9.15
- UNI-APP隐私政策问题无法上架
- DirectShow编程(3.1)- 关于DirectShow - DirectShow体系概述
- apktool 用法命令详解
- 万字博文让我们携手一起走进bs4的世界【python Beautifulsoup】bs4入门 find()与find_all()
- firebase使用_这就是我希望在开始使用Firebase之前所要知道的
- 能用计算机做什么作文,电脑的用途作文(九篇)