判断国际象棋棋盘中的一个格子的颜色

tobegold574 Lv5

判断国际象棋棋盘中的一个格子的颜色(easy)

做题过程

还是用了差值来求,题目本身很简单,但这样求解极其不优雅且冗长。

算法概述

原题

本题要求为给出格子坐标,判断格子元素。可用 位运算 简单完成。

  • 时间复杂度为O(n)
  • 空间复杂度为O(1)

JAVA

1
2
3
4
5
6
class Solution {
public boolean squareIsWhite(String coordinates) {
// 计算差值
return (((int)coordinates.charAt(0)-'a')-(int)(coordinates.charAt(1)))%2==0;
}
}

C++

1
2
3
4
5
6
7
class Solution {
public:
bool squareIsWhite(string c) {
// 先判断奇偶性,再判断是否为奇
return (c[0] ^ c[1]) & 1;
}
};

重要实例方法及属性(C++)

^:异或,用于判断奇偶性是否相同,相同最低位返回0,不相同返回1
&:按位与,用于判断结果

总结

位运算对于 重复、奇偶性 等问题十分实用。但是只有c++能通过overloading简便进行随机访问。

  • Title: 判断国际象棋棋盘中的一个格子的颜色
  • Author: tobegold574
  • Created at : 2024-12-09 11:46:10
  • Updated at : 2024-12-09 11:55:46
  • Link: https://tobegold574.me/2024/12/09/判断国际象棋棋盘中的一个格子的颜色/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments