当前位置: 首页 > news >正文

井字游戏00

题目链接

井字游戏

题目描述


注意点

  • 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;}
}

关键点

  • 井字棋取胜的规律
  • 注意边界问题
http://www.lryc.cn/news/395578.html

相关文章:

  • GEE代码实例教程详解:地表温度与土地覆盖类型分析
  • RK3568------Openharmony 4.0-Release 浏览器部署安装
  • 【kafka】可视化工具cmak(原kafka-manager)安装问题解决
  • 【转载】目标检测mAP的含义
  • 智慧校园行政办公-红头文件功能概述
  • 汽车IVI中控开发入门及进阶(三十三):i.MX linux开发之开发板
  • Redis基础教程(十八):Redis管道技术
  • 深度学习(笔记内容)
  • 阿里云登陆Centos7
  • 探索C嘎嘎的奇妙世界:第十九关---STL(list的模拟实现)
  • 【分布式系统三】监控平台Zabbix对接grafana(截图详细版)
  • SAPUI5基础知识11 - 组件配置(Component)
  • Spring最早的源码
  • 热烈祝贺!全视通多家客户上榜全球自然指数TOP100!
  • 常用接口避免频繁请求
  • C++入门基础
  • Unicode 与 UTF-8 的区别与联系
  • PHP MySQL 简介
  • Spring容器加载Bean和JVM加载类
  • 《简历宝典》04 - 简历的“个人信息”模块,要写性别吗?要放照片吗?
  • TTS模型汇总
  • js打印出堆栈
  • 论文阅读:A Survey on Evaluation of Large Language Models
  • MyBatis的简介与使用
  • MAX98357、MAX98357A、MAX98357B小巧、低成本、PCM D类IIS放大器,具有AB类性能中文说明规格书
  • shell(2)
  • 昇思25天学习打卡营第1天|初识MindSpore
  • C语言字节对齐技术在嵌入式、网络与操作系统中的应用与优化
  • 如何理解李彦宏说的”不要卷模型,要卷应用
  • 三、Python日志系统之监控邮件发送