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

例子:
输入: coordinates = "a1"
输出: false
解释: 如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。
输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。
解题思路:
方法1
全排列, 这种相对较快一些, 也比较容易理解
func squareIsWhite(_ coordinates: String) -> Bool {
let arr = ["a1", "c1", "e1", "g1", "b2", "d2", "f2", "h2",
"a3", "c3", "e3", "g3", "b4", "d4", "f4", "h4",
"a5", "c5", "e5", "g5", "b6", "d6", "f6", "h6",
"a7", "c7", "e7", "g7", "b8", "d8", "f8", "h8"];
return !arr.contains(coordinates)
}
方法2
奇偶特点, 转成ascii码, 我们会发现x, y之和偶数为黑, 奇数为白, 根据这个特点可以处理
这里可以多种方法处理, 余数, &操作等都可
func squareIsWhite(_ coordinates: String) -> Bool {
// 转成ascii码进行余数判断, 一行代码可以, 只不过比较长
let a = coordinates.first!.asciiValue, b = coordinates.last!.asciiValue
return (a! + b!) % 2 == 1
}
题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址
网友评论