leetcode面试题 16.04. 井字游戏
生活随笔
收集整理的這篇文章主要介紹了
leetcode面试题 16.04. 井字游戏
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
設(shè)計(jì)一個(gè)算法,判斷玩家是否贏了井字游戲。輸入是一個(gè) N x N 的數(shù)組棋盤,由字符" ",“X"和"O"組成,其中字符” "代表一個(gè)空位。
以下是井字游戲的規(guī)則:
玩家輪流將字符放入空位(" “)中。
第一個(gè)玩家總是放字符"O”,且第二個(gè)玩家總是放字符"X"。
"X"和"O"只允許放置在空位中,不允許對已放有字符的位置進(jìn)行填充。
當(dāng)有N個(gè)相同(且非空)的字符填充任何行、列或?qū)蔷€時(shí),游戲結(jié)束,對應(yīng)該字符的玩家獲勝。
當(dāng)所有位置非空時(shí),也算為游戲結(jié)束。
如果游戲結(jié)束,玩家不允許再放置字符。
如果游戲存在獲勝者,就返回該游戲的獲勝者使用的字符(“X"或"O”);如果游戲以平局結(jié)束,則返回 “Draw”;如果仍會(huì)有行動(dòng)(游戲未結(jié)束),則返回 “Pending”。
示例 1:
輸入: board = [“O X”," XO",“X O”]
輸出: “X”
代碼
class Solution {public String tictactoe(String[] board) {int n=board.length,blank=0;for(int i=0;i<n;i++){if(board[i].charAt(0)==' '){blank++;}boolean check=true;for(int j=1;j<n;j++)//檢查每一行if(board[i].charAt(j)==' '){blank++;check=false;break;}else if(board[i].charAt(j)!=board[i].charAt(0)){check=false;break;}if(check) return String.valueOf(board[i].charAt(0));if(board[0].charAt(i)==' ') {blank++;continue;}check=true;for(int j=1;j<n;j++)//檢查每一列if(board[j].charAt(i)==' '){blank++;check=false;break;}else if(board[j].charAt(i)!=board[0].charAt(i)){check=false;break;}if(check) return String.valueOf(board[0].charAt(i));}if(board[0].charAt(0)!=' '){boolean check=true;for(int i=1;i<n;i++)//檢查主對角線{if(board[i].charAt(i)!=board[0].charAt(0)){check=false;break;}}if(check) return String.valueOf(board[0].charAt(0));}if(board[0].charAt(n-1)!=' '){boolean check=true;for(int i=1;i<n;i++)//檢查副對角線{if(board[i].charAt(n-i-1)!=board[0].charAt(n-1)){check=false;break;}}if(check) return String.valueOf(board[0].charAt(n-1));}if(blank!=0) return "Pending";else return "Draw";//沒有空白的格子} }總結(jié)
以上是生活随笔為你收集整理的leetcode面试题 16.04. 井字游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到去纹身是什么意思
- 下一篇: leetcode1144. 递减元素使数