「每日LeetCode」2022年12月9日

本文最后更新于:2023年3月19日 晚上

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

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

Category Difficulty Likes Dislikes
algorithms Easy (77.86%) 39 -

Tags
Companies
给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。

如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。
给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。

示例 1:
输入:coordinates = “a1” 输出:false 解释:如上图棋盘所示,”a1” 坐标的格子是黑色的,所以返回 false 。
示例 2:
输入:coordinates = “h3” 输出:true 解释:如上图棋盘所示,”h3” 坐标的格子是白色的,所以返回 true 。
示例 3:
输入:coordinates = “c7” 输出:false

提示:

  • coordinates.length == 2
  • ‘a’ <= coordinates[0] <= ‘h’
  • ‘1’ <= coordinates[1] <= ‘8’

Discussion | Solution

思路

首先,这段代码定义了一个名为 squareIsWhite 的函数,它接受一个参数 coordinates,并返回一个布尔值。函数的实现方式是,首先使用 let 声明了两个变量 x 和 y,然后使用解构赋值语法将字符串 coordinates 中的第一个字符和第二个字符分别赋值给 x 和 y。接着,使用 x.charCodeAt() 方法获取 x 字符的 ASCII 码,并将其赋值给 x。最后,使用条件运算符返回一个布尔值。
让我们来看一个示例,假设你传入的 coordinates 参数为 “A1”。那么,函数会执行下面的操作:

  1. 使用解构赋值语法将字符串 “A1” 中的第一个字符和第二个字符分别赋值给 x 和 y,此时 x 的值为 “A”,y 的值为 “1”。
  2. 使用 x.charCodeAt() 方法获取字符 “A” 的 ASCII 码,并将其赋值给 x。由于 “A” 的 ASCII 码为 65,因此 x 的值变为 65。
  3. 最后,使用条件运算符返回一个布尔值。由于 x % 2 === 0 为真,并且 +y % 2 !== 0 为真,因此最后函数会返回 true。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
* @lc app=leetcode.cn id=1812 lang=javascript
*
* [1812] 判断国际象棋棋盘中一个格子的颜色
*/

// @lc code=start
/**
* @param {string} coordinates
* @return {boolean}
*/
var squareIsWhite = function (coordinates) {
let [x, y] = coordinates.split("");
x = x.charCodeAt();
return (x % 2 === 0 && +y % 2 !== 0) || (x % 2 !== 0 && +y % 2 === 0);
};
// @lc code=end