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

相关推荐
贾斯汀玛尔斯3 小时前
每天学一个算法--LSM-Tree(Log-Structured Merge Tree)
java·算法·lsm-tree
浅念-7 小时前
刷穿LeetCode:BFS 解决 Flood Fill 算法
数据结构·c++·算法·leetcode·职场和发展·bfs·宽度优先
做cv的小昊8 小时前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)
笔记·线性代数·算法·数学建模·回归·线性回归·概率论
贾斯汀玛尔斯8 小时前
每天学一个算法--倒排索引(Inverted Index)
算法·inverted-index
小e说说8 小时前
打破偏科困境:这些学习软件助孩子重燃学习热情
算法
月昤昽9 小时前
autoCAD二次开发 4.正多边形与collection区分
算法·c#·二次开发·autocad二次开发
休息一下接着来9 小时前
C++ 固定容量环形队列实现
c++·算法
im_AMBER10 小时前
手撕hot100之矩阵!看完这篇就AC~
javascript·数据结构·线性代数·算法·leetcode·矩阵
笨笨饿10 小时前
#79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究
linux·c语言·网络·驱动开发·算法·硬件工程·个人开发