1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| class Solution { public: string tictactoe(vector<string>& board) { bool lxDiaX = false; bool lxDiaO = false; bool rxDiaX = false; bool rxDiaO = false; bool pending = false; int n = board.size(); for(int i = 0; i < n; ++i) { bool rowX = false; bool rowO = false; bool colX = false; bool colO = false; if(!lxDiaO) lxDiaO = 'O' ^ board[i][i]; if(!lxDiaX) lxDiaX = 'X' ^ board[i][i]; if(!rxDiaO) rxDiaO = 'O' ^ board[i][n - i - 1]; if(!rxDiaX) rxDiaX = 'X' ^ board[i][n - i - 1]; for(int j = 0; j < n; ++j) { if(board[i][j] == ' ') pending = true; if(!rowX) rowX = 'X' ^ board[i][j]; if(!rowO) rowO = 'O' ^ board[i][j]; if(!colX) colX = 'X' ^ board[j][i]; if(!colO) colO = 'O' ^ board[j][i]; } if(!rowX || !colX) return "X"; if(!rowO || !colO) return "O"; } if(!lxDiaO || !rxDiaO) return "O"; else if(!lxDiaX || !rxDiaX) return "X"; else if(pending) return "Pending"; return "Draw"; } };
|