總共有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。
示例
輸入:colors = "aaababb"
輸出:true
解釋:aaababb -> aababb
alice 先操作。
她刪除從左數第二個 'a' ,這也是唯一乙個相鄰顏色片段都是 'a' 的 'a' 。
現在輪到 bob 操作。
bob 無法執行任何操作,因為沒有相鄰位置都是 'b' 的顏色片段 'b' 。
因此,alice 獲勝,返回 true 。
思路
由於alice和bob會採用最優策略,所以可以忽略每次刪除那個片段,直接計算可刪除次數,比較大小即可
使用乙個迴圈,遍歷整個字串,統計a和b的連續片段數,大的獲勝
class solution
return acount > bcount;
}}
題目來自力扣 每日一題 顏色分類(中等)
給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...
每日一題 day4
基礎題 1 判斷兩個鍊錶是否相交,若相交,求交點 假設鍊錶不帶環 思路 2 判斷兩個鍊錶是否相交,若相交,求交點 假設鍊錶可能帶環 思路 兩個鍊錶帶環可分為兩種情況 1.乙個帶環,乙個不帶環 這種情況是不會有交點的 2.兩個都帶環 分析 入口點相同時,分別讓兩個鍊錶從入口點處斷開,則轉換成了兩個不帶...
每日一題 day6
基礎題 1 兩個棧實現乙個佇列 思路 棧的特點 後進先出 佇列的特點 先進先出 兩個棧可將乙個棧用於入資料,另乙個用於出資料 define crt secure no warnings include includetemplate class myqueue void pop 刪除頭部資料 s2....