给你一个坐标coordinates
,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。
如果所给格子的颜色是白色,请你返回true
,如果是黑色,请返回false
。
给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
输入:coordinates = "a1"
输出:false
解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。
输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。
输入:coordinates = "c7"
输出:false
Problem: 1812. 判断国际象棋棋盘中一个格子的颜色
可能有一些奥数思维(就是简单的把同类别的放在一起),因为棋盘是固定的所以数组里的字母也就固定了一下。很多都可以简写,但是因为工作性质我个人倾向于先把最快想到的解决方法写出来,在时间允许的情况下再精简。
固定棋盘分类
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 "";
}
}
}