【力扣】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不熟悉,基础有待补充强化。

相关推荐
关于不上作者榜就原神启动那件事35 分钟前
模拟算法乒乓球
开发语言·c++·算法
Bug退退退12342 分钟前
ArrayList 与 LinkedList 的区别
java·数据结构·算法
88号技师1 小时前
2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
一个不知名程序员www2 小时前
算法学习入门---二分查找(C++)
c++·算法
2301_807997382 小时前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法3 小时前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
TL滕3 小时前
从0开始学算法——第一天(认识算法)
数据结构·笔记·学习·算法
小欣加油3 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
love is sour3 小时前
聚类(Clustering)详解:让机器自己发现数据结构
算法·支持向量机·聚类
烟袅3 小时前
LeetCode 142:环形链表 II —— 快慢指针定位环的起点(JavaScript)
前端·javascript·算法