前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

作者头像
爪哇缪斯
发布2023-05-10 13:17:49
1990
发布2023-05-10 13:17:49
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

一、题目

给你一个坐标 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> 采用异或方式

代码语言:javascript
复制
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> 采用奇偶方式

代码语言:javascript
复制
class Solution {
    public boolean squareIsWhite(String coordinates) {
        return (coordinates.charAt(0) + coordinates.charAt(1)) % 2 == 1; // 白色用奇数表示,黑色用偶数表示
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目
  • 二、示例
    • 2.1> 示例 1:
      • 2.2> 示例 2:
        • 2.3> 示例 3:
          • 提示:
          • 三、解题思路
            • 3.1> 采用异或方式
              • 3.2> 采用奇偶方式
              • 四、代码实现
                • 4.1> 采用异或方式
                  • 4.2> 采用奇偶方式
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档