原题链接

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

示例1

输入:coordinates = "a1"
输出:false
解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。

示例2

输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。

示例3

输入:coordinates = "c7"
输出:false

提示:
file


我的答案

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

思路

可能有一些奥数思维(就是简单的把同类别的放在一起),因为棋盘是固定的所以数组里的字母也就固定了一下。很多都可以简写,但是因为工作性质我个人倾向于先把最快想到的解决方法写出来,在时间允许的情况下再精简。

解题方法

固定棋盘分类

Code


class Solution {

    /**
     * @param String $coordinates
     * @return Boolean
     */
    function squareIsWhite($coordinates) {
        //获取第一位字母
        $string = substr($coordinates,0,1);
        //获取第二位数字
        $num =  substr($coordinates,1,2);
        //分别归类a,c,e,g是相同的b,d,f,h是相同的
        $array1 = ["a","c","e","g"];
        $array2 = ["b","d","f","h"];
        //用获取第一位字母判断是否在当前数组
        if(in_array($string,$array1)){
            //利用除以2取余判断奇偶
            if($num % 2 == 0){
                //a,c,e,g的偶数行都是白色所以返回true
                return true;
            }else{
                //a,c,e,g的奇数行都是黑色所以返回false
                return false;
            }
        }
        //以下逻辑同上只不过奇偶调换
        elseif(in_array($string,$array2)){
            if($num % 2 == 0){
                return false;
            }else{
                return true;
            }
        }else{
            return "";
        }
    }
}

其他php答案