开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
终于落地了,那个单独部署的项目,剩下的又开始新的任务了
判断国际象棋棋盘中一个格子的颜色
该题出自力扣的1812题 —— 判断国际象棋棋牌中一个格子的颜色【简单题】
审题
给你一个坐标
coordinates,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
- 这道题简直就是简单题的典范,给出限定的棋盘格,其实就是 8 × 8 的矩阵,交错的黑白格,判断格子内是白色还是黑色,白色返回true,黑色返回fasle
- 开辟一个字符串String,里面存储单数的字母,aceg内的单数格为黑色,对应的也就是fasle,双数为白色true
- 目标字符串内部只有两个字符,第一个为字母下标,第二个为数字对应Y轴,转化为字符数组
- 利用字符串的indexOf方法,判断是否存在X轴下标,再利用&1的方法,判断是否为单数,对应返回
- 因为用例并不大,,所以就算用更暴力的打表法,也不会太多,也就是64种结果而已
- 左下角开始,棋盘的行数和列数(均从 11 开始计数)之和如果为奇数,则为白色格子,如果和为偶数,则为黑色格子。主对角线上的点,横纵坐标之和为一个固定值**,然后黑白对角线交替出现,判断一下坐标之和对2取余的值。
编码
class Solution {
String a = "aceg";
public boolean squareIsWhite(String coordinates) {
char[] chars = coordinates.toCharArray();
if (a.indexOf(chars[0]) != -1){
if ((chars[1] & 1) != 1)return true;
return false;
}else {
if ((chars[1] & 1) != 1)return false;
return true;
}
}
}