C++ LeetCode1812判斷國(guó)際象棋棋盤(pán)格子顏色
1812.判斷國(guó)際象棋棋盤(pán)中一個(gè)格子的顏色
力扣題目鏈接:leetcode.cn/problems/de…
給你一個(gè)坐標(biāo) coordinates ,它是一個(gè)字符串,表示國(guó)際象棋棋盤(pán)中一個(gè)格子的坐標(biāo)。下圖是國(guó)際象棋棋盤(pán)示意圖。

如果所給格子的顏色是白色,請(qǐng)你返回 true,如果是黑色,請(qǐng)返回 false 。
給定坐標(biāo)一定代表國(guó)際象棋棋盤(pán)上一個(gè)存在的格子。坐標(biāo)第一個(gè)字符是字母,第二個(gè)字符是數(shù)字。
示例 1:
輸入:coordinates = "a1"
輸出:false
解釋?zhuān)喝缟蠄D棋盤(pán)所示,"a1" 坐標(biāo)的格子是黑色的,所以返回 false 。
示例 2:
輸入:coordinates = "h3"
輸出:true
解釋?zhuān)喝缟蠄D棋盤(pán)所示,"h3" 坐標(biāo)的格子是白色的,所以返回 true 。
示例 3:
輸入:coordinates = "c7"
輸出:false
提示:
coordinates.length == 2'a' <= coordinates[0] <= 'h''1' <= coordinates[1] <= '8'
方法一:取模
其實(shí)不難發(fā)現(xiàn),a1、a3、a5是黑色,a2、a4是白色,b2是黑色
我們把a ~ h映射為0 ~ 7,把1 ~ 8也映射為0 ~ 7,此時(shí)我們就能發(fā)現(xiàn),當(dāng)字母映射成的數(shù)字和數(shù)字映射成的數(shù)字的奇偶性相同時(shí),格子為黑色。
因此,我們只需要判斷字母 - 'a'和數(shù)字 - '1'的奇偶性是否相同,若不同則為白色,返回true
- 時(shí)間復(fù)雜度O(1)
- 空間復(fù)雜度O(1)
AC代碼
C++
class Solution {
public:
bool squareIsWhite(string coordinates) {
return (coordinates[0] - 'a') % 2 != (coordinates[1] - '1') % 2;
}
};
方法二:基于方法一的小改進(jìn)
方法一中我們令字母減'a'令數(shù)字減'1',然后判斷二者奇偶性是否相同。
方法二中我們對(duì)此做一個(gè)小小的優(yōu)化:
a的ASCII碼是97,1的ASCII碼是49,二者本來(lái)奇偶性就相同。
因此,在方法二中,我們可以“字母不減'a'”了,“數(shù)字也不減'1'”了,直接判斷字母和數(shù)字的奇偶性是否相同即可
- 時(shí)間復(fù)雜度O(1)
- 空間復(fù)雜度O(1)
AC代碼
C++
class Solution {
public:
bool squareIsWhite(string coordinates) {
return coordinates[0] % 2 != coordinates[1] % 2;
}
};
方法二相比于方法一少了兩次減法運(yùn)算。
以上就是C++ LeetCode1812判斷國(guó)際象棋棋盤(pán)格子顏色的詳細(xì)內(nèi)容,更多關(guān)于C++ 判斷棋盤(pán)格子顏色的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C/C++哈希表優(yōu)化LeetCode題解997找到小鎮(zhèn)的法官
- C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼
- C++ LeetCode1805字符串不同整數(shù)數(shù)目
- C++ LeetCode1775通過(guò)最少操作次數(shù)使數(shù)組和相等
- C++ LeetCode1780判斷數(shù)字是否可以表示成三的冪的和
- C++ LeetCode300最長(zhǎng)遞增子序列
- C++?LeetCode1827題解最少操作使數(shù)組遞增
- C/C++題解LeetCode1295統(tǒng)計(jì)位數(shù)為偶數(shù)的數(shù)字
相關(guān)文章
Linux中使用C語(yǔ)言實(shí)現(xiàn)基于UDP協(xié)議的Socket通信示例
這篇文章主要介紹了Linux中使用C語(yǔ)言實(shí)現(xiàn)基于UDP協(xié)議的socket通信示例,服務(wù)器端與客戶端的功能都非?;A(chǔ),需要的朋友可以參考下2016-03-03
C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問(wèn)題詳解
c++?vector轉(zhuǎn)數(shù)組是一種將vector容器的元素轉(zhuǎn)換為數(shù)組的方法,主要能幫助提高程序的性能和效率,下面這篇文章主要給大家介紹了關(guān)于C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問(wèn)題的相關(guān)資料,需要的朋友可以參考下2023-03-03
json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)
下面小編就為大家?guī)?lái)一篇json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
C語(yǔ)言實(shí)現(xiàn)圖書(shū)館管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的圖文教程
很久沒(méi)有寫(xiě)C語(yǔ)言了,今天抽空學(xué)習(xí)下C語(yǔ)言知識(shí),接下來(lái)通過(guò)本文給大家介紹Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的詳細(xì)步驟,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-11-11
C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解
下面小編就為大家?guī)?lái)一篇C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
C語(yǔ)言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)家庭理財(cái)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

