开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
刷题的日常-2022年12月9号
一天一题,保持脑子清爽
判断国际象棋棋盘中一个格子的颜色
来自leetcode的 1812 题,题意如下:
给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。
如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。
给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
理解题意
通过题意,我们可以将信息整理如下:
- 题目给出一个字符串
- 字符串由两个字符构成
- 一个是横坐标,一个是纵坐标
- 要求我们返回给定坐标位置的格子是否是白色
做题思路
其实就是通过坐标判断下颜色即可,这里其实可以先判断横坐标的位置,然后再看下纵坐标的位置。我们可以发现,在 a c e g为横坐标的时候,纵坐标是偶数的时候,格子的颜色就是白色,否则奇数才是白色。这里采取第二种方式进行实现。
方式二
我们知道字符其实是一种计算机的编码,所以像字母 a b c d 其实可以用一个int值去表示,并且在编码中,a - z的字符编码是连续的,比如说 a 的ascii编码是 97,而 b 字符则用 98 表示。知道了这一点,然后我们再观察一下棋盘的规则,如果 a 代表 0 的话,那么当和纵坐标相加的和为偶数时,代表的格子为白色。因此我们可以将 横坐标转换为 int 值再去做计算,然后和横坐标相加之后,和 2 相除取模即可。
代码实现
代码实现如下:
public class Solution {
public boolean squareIsWhite(String coordinates) {
return (coordinates.charAt(0) + coordinates.charAt(1) - 145) % 2 == 0;
}
}