CodeFights chessBoardCellColor挑战代码调试求助:判断棋盘格是否同色
搞定CodeFights的chessBoardCellColor挑战
嘿,看你的代码结构是对的——通过比较两个格子是否同为白色来判断颜色是否一致,问题肯定出在没写完的isWhite方法上!我来帮你理清楚逻辑,补全代码。
首先得明确国际象棋棋盘的颜色规律:把每个格子的字母(A-H)转成对应的数字(A=1,B=2…H=8),和格子的数字部分相加。如果这个和是偶数,格子是白色;如果是奇数,就是黑色。(本质上就是字母和数字的奇偶性相同则为白,不同则为黑,两种说法是等价的)
现在补全你的代码,直接能用:
boolean chessBoardCellColor(String cell1, String cell2) { return isWhite(cell1) == isWhite(cell2); } boolean isWhite(String cell){ // 把字母转成1-8的数值:A→1,B→2...H→8 int letterValue = cell.charAt(0) - 'A' + 1; // 把字符数字转成整数:'1'→1,'2'→2...'8'→8 int numberValue = cell.charAt(1) - '0'; // 判断和的奇偶性:偶数返回true(白色),奇数返回false(黑色) return (letterValue + numberValue) % 2 == 0; }
验证几个测试用例:
- 输入
cell1="A1", cell2="C3":A1的和是1+1=2(偶,白),C3的和是3+3=6(偶,白)→ 返回true,正确。 - 输入
cell1="A1", cell2="H3":H3的和是8+3=11(奇,黑)→ 返回false,正确。
另外,也可以换一种写法判断,效果完全一样:
boolean isWhite(String cell){ int letterValue = cell.charAt(0) - 'A' + 1; int numberValue = cell.charAt(1) - '0'; // 直接判断字母和数字的奇偶性是否相同 return (letterValue % 2) == (numberValue % 2); }
你的核心思路没问题,就是差了isWhite的具体实现,补完之后应该就能顺利通过所有测试用例啦!
内容的提问来源于stack exchange,提问作者Chklt Labs
相关产品推荐
相关产品推荐

