题目链接
    image.png
    采用分类的思想去解决。
    如何分类?

    1. 1. **X赢了 X棋子 - O棋子 = 1。穷举**
    2. 1. **O赢了 X棋子 - O棋子 = 0。穷举**
    3. 1. **胜负未分 X棋子 - O棋子 = 1 X棋子 - O棋子 = 0 == 》这两个条件之外就是不可能出现的条件**

    四种情况连起来。
    image.png

    class Solution {
        // ⅰ. X赢了  X棋子 - O棋子 = 1。穷举
        // ⅱ. O赢了 X棋子 - O棋子 = 0。穷举
        // ⅲ. 胜负未分  X棋子 - O棋子 = 1 ,X棋子 - O棋子 = 0   == 》这两个条件之外就是不可能出现的条件
        public boolean validTicTacToe(String[] board) {
            int xCount = 0,oCount = 0;
            // 获取X和O棋子的数量
            for(String s : board) {
                for(char ch : s.toCharArray()) {
                    if(ch == 'X') {
                        xCount++;
                    } else if(ch =='O') {
                        oCount++;
                    }
                }
            }
    
            // 判断胜负未分
            if(xCount != oCount && xCount != oCount+1) {
                return false;
            }
    
            if(xCount == oCount+1 && getWin(board,"OOO")) {
                return false;
            }
    
            // O赢了
            if(xCount == oCount && getWin(board,"OOO") && getWin(board,"XXX")) {
                return false;
            }
    
            if(xCount == oCount && getWin(board,"XXX")) {
                return false;
            }
    
            // X赢了
            if(xCount == oCount+1 && getWin(board,"XXX")) {
                return true;
            }
    
    
            return true;
        }
    
        // 找出是否存在赢了的横纵线
        public boolean getWin(String[] board, String temp) {
            for(int i = 0; i < 3; i++) {
                // 横线
                if(temp.equals(board[i])) {
                    return true;
                }
    
                // 纵向
                if(temp.equals("" + board[0].charAt(i) + board[1].charAt(i) + board[2].charAt(i))) {
                    return true;
                }
            }
    
            // 斜线的情况
            if(temp.equals("" + board[0].charAt(0)+board[1].charAt(1)+board[2].charAt(2))) {
                return true;
            }
    
            if(temp.equals("" + board[2].charAt(0)+board[1].charAt(1)+board[0].charAt(2))) {
                return true;
            }
    
            return false;
        }
    }