https://leetcode.com/problems/valid-tic-tac-toe-state/
1、X必须比O多1个或者相同,否则false
2、X和O不能同时都是赢家,否则false
3、X赢的时候必须比O多1个,否则false
4、O赢得时候个数与X相同,否则false;
其他的都是true
class Solution {
public boolean validTicTacToe(String[] board) {
int x = 0; // x count
int o = 0; // o count
char[][] b = new char[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
char c = board[i].charAt(j);
if (c == 'X') x++;
else if (c == 'O') o++;
b[i][j] = c;
}
}
if (o > x || x - o >= 2) return false;
int xWin = 0;
int oWin = 0;
if (b[0][0] != ' ' && b[0][0] == b[0][1] && b[0][1] == b[0][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
if (b[1][0] != ' ' && b[1][0] == b[1][1] && b[1][1] == b[1][2]) {if (b[1][0] == 'X') xWin++; else oWin++;}
if (b[2][0] != ' ' && b[2][0] == b[2][1] && b[2][1] == b[2][2]) {if (b[2][0] == 'X') xWin++; else oWin++;}
if (b[0][0] != ' ' && b[0][0] == b[1][0] && b[1][0] == b[2][0]) {if (b[0][0] == 'X') xWin++; else oWin++;}
if (b[0][1] != ' ' && b[0][1] == b[1][1] && b[1][1] == b[2][1]) {if (b[0][1] == 'X') xWin++; else oWin++;}
if (b[0][2] != ' ' && b[0][2] == b[1][2] && b[1][2] == b[2][2]) {if (b[0][2] == 'X') xWin++; else oWin++;}
if (b[0][0] != ' ' && b[0][0] == b[1][1] && b[1][1] == b[2][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
if (b[0][2] != ' ' && b[0][2] == b[1][1] && b[1][1] == b[2][0]) {if (b[0][2] == 'X') xWin++; else oWin++;}
// 1、X必须比O多1个或者相同,否则false
// 2、X和O不能同时都是赢家,否则false
// 3、X赢的时候必须比O多1个,否则false
// 4、O赢得时候个数与X相同,否则false;
// 其他的都是true
if (xWin >= 1 && oWin >= 1) return false;
if (xWin >= 1) return x == o + 1;
if (oWin >= 1) return x == o;
return true;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://hanquan.blog.csdn.net/article/details/122057990
内容来源于网络,如有侵权,请联系作者删除!