leetcode 794. Valid Tic-Tac-Toe State | 794. 有效的井字游戏(Java)

x33g5p2x  于2021-12-21 转载在 Java  
字(1.5k)|赞(0)|评价(0)|浏览(292)

题目

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

  1. class Solution {
  2. public boolean validTicTacToe(String[] board) {
  3. int x = 0; // x count
  4. int o = 0; // o count
  5. char[][] b = new char[3][3];
  6. for (int i = 0; i < 3; i++) {
  7. for (int j = 0; j < 3; j++) {
  8. char c = board[i].charAt(j);
  9. if (c == 'X') x++;
  10. else if (c == 'O') o++;
  11. b[i][j] = c;
  12. }
  13. }
  14. if (o > x || x - o >= 2) return false;
  15. int xWin = 0;
  16. int oWin = 0;
  17. if (b[0][0] != ' ' && b[0][0] == b[0][1] && b[0][1] == b[0][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
  18. if (b[1][0] != ' ' && b[1][0] == b[1][1] && b[1][1] == b[1][2]) {if (b[1][0] == 'X') xWin++; else oWin++;}
  19. if (b[2][0] != ' ' && b[2][0] == b[2][1] && b[2][1] == b[2][2]) {if (b[2][0] == 'X') xWin++; else oWin++;}
  20. if (b[0][0] != ' ' && b[0][0] == b[1][0] && b[1][0] == b[2][0]) {if (b[0][0] == 'X') xWin++; else oWin++;}
  21. if (b[0][1] != ' ' && b[0][1] == b[1][1] && b[1][1] == b[2][1]) {if (b[0][1] == 'X') xWin++; else oWin++;}
  22. if (b[0][2] != ' ' && b[0][2] == b[1][2] && b[1][2] == b[2][2]) {if (b[0][2] == 'X') xWin++; else oWin++;}
  23. if (b[0][0] != ' ' && b[0][0] == b[1][1] && b[1][1] == b[2][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
  24. if (b[0][2] != ' ' && b[0][2] == b[1][1] && b[1][1] == b[2][0]) {if (b[0][2] == 'X') xWin++; else oWin++;}
  25. // 1、X必须比O多1个或者相同,否则false
  26. // 2、X和O不能同时都是赢家,否则false
  27. // 3、X赢的时候必须比O多1个,否则false
  28. // 4、O赢得时候个数与X相同,否则false;
  29. // 其他的都是true
  30. if (xWin >= 1 && oWin >= 1) return false;
  31. if (xWin >= 1) return x == o + 1;
  32. if (oWin >= 1) return x == o;
  33. return true;
  34. }
  35. }

相关文章

最新文章

更多