美文网首页
IOS 算法(基础篇) ----- 判断国际象棋棋盘中一个格子

IOS 算法(基础篇) ----- 判断国际象棋棋盘中一个格子

作者: ShawnAlex | 来源:发表于2021-04-06 10:49 被阅读0次

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

exp

例子:

输入: 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 算法合集地址

相关文章

网友评论

      本文标题:IOS 算法(基础篇) ----- 判断国际象棋棋盘中一个格子

      本文链接:https://www.haomeiwen.com/subject/dfjskltx.html