用字符串数组作为井字游戏的游戏板 board,判断该游戏板有没有可能最终形成
游戏板是一个 3 x 3 数组,由字符 “ “,”X” 和 “O” 组成。字符 “ “ 代表一个空位。
两个玩家轮流将字符放入空位,一个玩家执X棋,另一个玩家执O棋
“X” 和 “O” 只允许放置在空位中,不允许对已放有字符的位置进行填充。
当有 3 个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,board生成
分类讨论
public static boolean validBoard(String[] board) {int xCount = 0;int oCount = 0;for (String row : board)for (char c : row.toCharArray()) {if (c == 'X') {xCount++;}if (c == 'O') {oCount++;}}//X与O 一样多,或者X比O多一个(X赢则X多一个,O赢则一样多)if ((oCount != xCount) && (oCount != (xCount - 1))) {return false;}if (win(board, "XXX") && (oCount != (xCount - 1))) {return false;}if (win(board, "OOO") && (oCount != xCount)) {return false;}return true;}public static boolean win(String[] board, String flag) {for (int i = 0; i < 3; ++i) {//纵向3连if (flag.equals("" + board[i].charAt(0) + board[i].charAt(1) +board[i].charAt(2))) {return true;}//横向3连if (flag.equals(board[i])) {return true;}}// \向3连if (flag.equals("" + board[0].charAt(0) + board[1].charAt(1) +board[2].charAt(2))) {return true;}// /向3连if (flag.equals("" + board[0].charAt(2) + board[1].charAt(1) +board[2].charAt(0))) {return true;}return false;}
