【力扣】3274. 检查棋盘方格颜色是否相同

一、题目

给你两个字符串 coordinate1 和 coordinate2,代表 8 x 8 国际象棋棋盘上的两个方格的坐标。以下是棋盘格的参考图:

如果这两个方格颜色相同,返回 true,否则返回 false。坐标总是表示有效的棋盘方格。坐标的格式总是先字母(表示列),再数字(表示行)。

示例:

输入:

coordinate1 = "a1", coordinate2 = "c3"

输出:

true

二、题解

思路:

通过观察发现处于黑格的坐标,无论是横坐标还是纵坐标,奇偶性是相同的,就比如a1,横坐标a换算成ascll为97是奇数,纵坐标1也是奇数。反之奇偶性不同则是白块。

自写代码:

java 复制代码
class Solution {
    public boolean checkTwoChessboards(String coordinate1, String coordinate2) {
        char m1 = coordinate1.charAt(0);
        char m2 = coordinate1.charAt(1);
        char n1 = coordinate2.charAt(0);
        char n2 = coordinate2.charAt(1);
        int asc1 = (int) m1;
        int asc2 = (int) n1;
        //1黑
        if(asc1 % 2 == m2 % 2){
            if(asc2 % 2 == n2 % 2){//2黑
                return true;
            }else {//2白
                return false;
            }
        }else {//1白
            if(asc2 % 2 == n2 % 2){//2黑
                return false;
            }else {
                return true;
            }
        }
    }
}

三、官方题解

思路:

由于棋盘上的黑白格是间隔排列的,因此:

当行数变化 1 时,格子的颜色会发生变化;

当列数变化 1 时,格子的颜色会发生变化。

因此,如果两个格子之间行数的差值,与列数的差值,二者的和为偶数,说明它们的颜色相同,否则颜色不同。记两个格子分别是 c ~1~和 c ~2~,也就是:
( c 1 [ 0 ] − c 2 [ 0 ] ) + ( c 1 [ 1 ] − c 2 [ 1 ] ) (c 1[0] - c 2[0]) + (c 1[1] - c 2[1]) (c1[0]−c2[0])+(c1[1]−c2[1])

为偶数即可。

代码:

java 复制代码
class Solution {
    public boolean checkTwoChessboards(String coordinate1, String coordinate2) {
        return (coordinate1.charAt(0) - coordinate2.charAt(0) + coordinate1.charAt(1) - coordinate2.charAt(1)) % 2 == 0;
    }
}

四、总结

1、关于解题思路上,已经想到了奇偶性的问题,但是没有细想,动手写代码时写感觉到了代码的繁杂,也没有停止纠正思路,这点需要改进。

2、关于java基础,对java不熟悉,基础有待补充强化。

相关推荐
winstongit3 分钟前
捷联惯导原理和算法预备知识
算法·机器人
£suPerpanda44 分钟前
P3916 图的遍历(Tarjan缩点和反向建边)
数据结构·c++·算法·深度优先·图论
IT古董1 小时前
【机器学习】机器学习的基本分类-监督学习-决策树-C4.5 算法
人工智能·学习·算法·决策树·机器学习·分类
m0_694938011 小时前
Leetcode打卡:棋盘上有效移动组合的数目
算法·leetcode·职场和发展
kitesxian1 小时前
Leetcode543. 二叉树的直径(HOT100)
算法·深度优先
我是博博啦1 小时前
matlab中disp,fprintf,sprintf,display,dlmwrite输出函数之间的区别
算法·matlab
生信宝典1 小时前
分而治之—利用决策树和规则进行分类
算法·决策树·分类
pzx_0011 小时前
【时间序列预测】基于Pytorch实现CNN_LSTM算法
人工智能·pytorch·python·算法·cnn·lstm
搏博3 小时前
路径规划之启发式算法之四:蚁群算法(Ant Colony Optimization,ACO)
人工智能·算法·机器学习
鸽鸽程序猿3 小时前
【算法】【优选算法】位运算(下)
算法·位运算