日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5886. 如果相邻两个颜色均相同则删除当前颜色

發布時間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5886. 如果相邻两个颜色均相同则删除当前颜色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5886. 如果相鄰兩個顏色均相同則刪除當前顏色

總共有 n 個顏色片段排成一列,每個顏色片段要么是 ‘A’ 要么是 ‘B’ 。給你一個長度為 n 的字符串 colors ,其中 colors[i] 表示第 i 個顏色片段的顏色。

Alice 和 Bob 在玩一個游戲,他們 輪流 從這個字符串中刪除顏色。Alice 先手 。

  • 如果一個顏色片段為 ‘A’ 且 相鄰兩個顏色 都是顏色 ‘A’ ,那么 Alice 可以刪除該顏色片段。Alice 不可以 刪除任何顏色 ‘B’ 片段。
  • 如果一個顏色片段為 ‘B’ 且 相鄰兩個顏色 都是顏色 ‘B’ ,那么 Bob 可以刪除該顏色片段。Bob 不可以 刪除任何顏色 ‘A’ 片段。
  • Alice 和 Bob 不能 從字符串兩端刪除顏色片段。
  • 如果其中一人無法繼續操作,則該玩家 輸 掉游戲且另一玩家 獲勝 。

假設 Alice 和 Bob 都采用最優策略,如果 Alice 獲勝,請返回 true,否則 Bob 獲勝,返回 false。

示例 1:輸入:colors = "AAABABB" 輸出:true 解釋: AAABABB -> AABABB Alice 先操作。 她刪除從左數第二個 'A' ,這也是唯一一個相鄰顏色片段都是 'A' 的 'A' 。現在輪到 Bob 操作。 Bob 無法執行任何操作,因為沒有相鄰位置都是 'B' 的顏色片段 'B' 。 因此,Alice 獲勝,返回 true 。 示例 2:輸入:colors = "AA" 輸出:false 解釋: Alice 先操作。 只有 2 個 'A' 且它們都在字符串的兩端,所以她無法執行任何操作。 因此,Bob 獲勝,返回 false 。 示例 3:輸入:colors = "ABBBBBBBAAA" 輸出:false 解釋: ABBBBBBBAAA -> ABBBBBBBAA Alice 先操作。 她唯一的選擇是刪除從右數起第二個 'A' 。ABBBBBBBAA -> ABBBBBBAA 接下來輪到 Bob 操作。 他有許多選擇,他可以選擇任何一個 'B' 刪除。然后輪到 Alice 操作,她無法刪除任何片段。 所以 Bob 獲勝,返回 false 。

解題思路

統計連續的A和連續的B,根據題意只有至少長度為3的連續字符才能進行刪除字符,并且刪除的個數為連續字符串長度減去首尾兩個字符,統計Alice和Bob可刪除的字符個數,可以刪除字符多的獲勝

代碼

class Solution {public boolean winnerOfGame(String colors) {int pre = 0, cntA = 0, cntB=0,i = 0;while (i < colors.length()) {int s=i;while (i < colors.length() && colors.charAt(i) == 'A') {i++;}int len = i - s, end = i;if (len>=3) cntA+=len-2;while (i < colors.length() && colors.charAt(i) =='B' ) {i++;}int len2 = i - end;if (len2>=2) cntB+=len2-2;}return cntA==0?false:cntA>cntB;} }

總結

以上是生活随笔為你收集整理的5886. 如果相邻两个颜色均相同则删除当前颜色的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。