一、题目

给你一个坐标 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. 判断国际象棋棋盘中一个格子的颜色(难度:简单)相关推荐

  1. LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色

    文章目录 1. 题目 2. 解题 1. 题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 ...

  2. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  3. LeetCode简单题之判断国际象棋棋盘中一个格子的颜色

    题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false ...

  4. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】

    13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...

  5. 国际象棋棋盘64个格子能容纳多少粒米

    问题:国际象棋盘中,第1 格放1 粒米,第2 格放2 粒米,第3格放4 粒米,第4 格放8 粒米,第5 格放16粒米,--问:64个格子总共可以放多少粒米? ''' 功能:用米粒来填充64格国际象棋棋 ...

  6. html 中一个格子拆分成两个_一个效果惊人的数字游戏

    安爸曾多次讲过数学推理能力对孩子成长的重要性,听到有位家长说自己用扔骰子的方法教孩子数学等式.步骤大致是扔骰子时,如果骰子是3,就在棋盘上从0出发走3步,并且写出0+3=3的加法等式.扔到负数就后退, ...

  7. 图解LeetCode——768. 最多能完成排序的块 II(难度:困难)

    一.题目 这个问题和"最多能完成排序的块"相似,但给定数组中的元素可以重复,输入数组最大长度为2000,其中的元素最大为10**8. arr是一个可能包含重复元素的整数数组,我们将 ...

  8. 查询屏幕中一个已知颜色的值

    1.登录微信网页版,快捷键打开微信截图(ctrl+A),对颜色所在的区域进行截图,将鼠标停放在颜色上面,就会有颜色值,如图: 2.可以知道所选中的颜色值为RGB:(199.21.133),这是一个十进 ...

  9. Python实验一:创建数组并进行运算、创建一个国际象棋棋盘

    目录 一.题目描述 1.创建数组并进行运算 2.创建一个国际象棋棋盘 二.实现代码: 1.创建数组并进行运算 2.创建一个国际象棋棋盘 一.题目描述 1.创建数组并进行运算 (1).创建一个数值范围为 ...

最新文章

  1. Java项目:在线考试系统(java+springboot+vue+jsp+mysql+maven)
  2. java 反射 动态代理
  3. java代码中添加事务_C#和JAVA中编写事务代码
  4. C语言函数调用一般分,C语言调用声明函数
  5. 计算机面试数据库基本知识,面试基础知识集合(python、计算机网络、操作系统、数据结构、数据库等杂记)...
  6. 现在的网盘对开发都极度不友好
  7. melogin.cn主页登录_melogin.cn登录官网
  8. php定义浏览器编码,从php脚本到浏览器,编码方式浅析
  9. div+css总结—FF下div不设置…
  10. 我的世界java版游戏图标_minecraftpe JAVA版游戏包mod
  11. IE8 访问https安全证书错误;导航阻止 解决办法
  12. java 抓图程序的实现
  13. 游戏中的网络同步机制——Lockstep(转载)
  14. 力扣(647.516)补9.15
  15. UNI-APP隐私政策问题无法上架
  16. DirectShow编程(3.1)- 关于DirectShow - DirectShow体系概述
  17. apktool 用法命令详解
  18. 万字博文让我们携手一起走进bs4的世界【python Beautifulsoup】bs4入门 find()与find_all()
  19. firebase使用_这就是我希望在开始使用Firebase之前所要知道的
  20. 能用计算机做什么作文,电脑的用途作文(九篇)

热门文章

  1. 中国大学MOOC-陈越、何钦铭-数据结构-2019夏期中考试+解析
  2. 基于h5的风云网球网站的设计
  3. wps下载 wps怎么显示所有窗口?
  4. 让minidlna支持rmvb格式电影
  5. uniapp 用 uView 组件库中的u-picker 实现地区的 省-市-区 三级联动
  6. 攻防世界 reverse新手题 game
  7. 【附源码】计算机毕业设计SSM图书商城
  8. 【机器学习】相关概念:闭式解,解析解,数值解
  9. 关于Cocos2d-x的enableRetinaDisplay函数
  10. AndroidFire,一款新闻阅读 App