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

相关推荐
闪电麦坤9544 分钟前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
Gyoku Mint1 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
纪元A梦1 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法
px不是xp2 小时前
山东大学算法设计与分析复习笔记
笔记·算法·贪心算法·动态规划·图搜索算法
枫景Maple3 小时前
LeetCode 2297. 跳跃游戏 VIII(中等)
算法·leetcode
鑫鑫向栄3 小时前
[蓝桥杯]修改数组
数据结构·c++·算法·蓝桥杯·动态规划
鑫鑫向栄3 小时前
[蓝桥杯]带分数
数据结构·c++·算法·职场和发展·蓝桥杯
小wanga4 小时前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝
天宫风子4 小时前
线性代数小述(一)
线性代数·算法·矩阵·抽象代数