清水河网站建设,深圳seo优化公司哪家好,长治网站建设招聘,如何建设网站后台题目链接
井字游戏
题目描述 注意点
1 board.length board[i].length 100输入一定遵循井字棋规则
解答思路
如果某一方想要获胜#xff0c;则其需要占满某一行或某一列或对角线#xff0c;所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线…题目链接
井字游戏
题目描述 注意点
1 board.length board[i].length 100输入一定遵循井字棋规则
解答思路
如果某一方想要获胜则其需要占满某一行或某一列或对角线所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线即可 对于第一行可以根据该行每一列的字符判断该列是否被该字符填充完如果是空则可直接跳过对于第一列可以根据该列每一行的字符判断该行是否被该字符填充完如果是空则可直接跳过对于左上角需要额外判断主对角线是否被该字符填充完如果是空则可直接跳过对于右上角需要额外判断副对角线是否被该字符填充完如果是空则可直接跳过 如果没有一方获胜还需要判断游戏是已结束平局还是未结束是否结束取决于棋盘中是否还有位置未填充字符所以需要用isFinished记录棋盘中是否还有空字符如果有说明未结束
代码
class Solution {int n;boolean isFinished;public String tictactoe(String[] board) {isFinished true;n board.length;// 判断字符是否填充完某一行for (int row 0; row n; row) {if (board[row].charAt(0) ) {isFinished false;} else {char c board[row].charAt(0);if (isRow(row, c, board)) {return String.valueOf(c);}}}// 判断字符是否填充完某一列for (int col 0; col n; col) {if (board[0].charAt(col) ) {isFinished false;} else {char c board[0].charAt(col);if (isCol(col, c, board)) {return String.valueOf(c);}}}// 左上角的点判断是否满足主对角线if (board[0].charAt(0) ) {isFinished false;} else {char c board[0].charAt(0);if (isMain(c, board)) {return String.valueOf(c);}}// 右上角的点判断是否满足副对角线if (board[0].charAt(n - 1) ) {isFinished false;} else {char c board[0].charAt(n - 1);if (isSub(c, board)) {return String.valueOf(c);}}return isFinished ? Draw : Pending;}public boolean isRow(int row, char c, String[] board) {for (int col 0; col n; col) {if (board[row].charAt(col) c) {continue;}if (board[row].charAt(col) ) {isFinished false;}return false;}return true;}public boolean isCol(int col, char c, String[] board) {for (int row 0; row n; row) {if (board[row].charAt(col) c) {continue;}if (board[row].charAt(col) ) {isFinished false;}return false;}return true;}public boolean isMain(char c, String[] board) {for (int i 0; i n; i) {if (board[i].charAt(i) c) {continue;}if (board[i].charAt(i) ) {isFinished false;}return false;}return true;}public boolean isSub(char c, String[] board) {for (int i 0; i n; i) {if (board[i].charAt(n - i - 1) c) {continue;}if (board[i].charAt(n - i - 1) ) {isFinished false;}return false;}return true;}
}关键点
井字棋取胜的规律注意边界问题