每日一題 Day37 刪除顏色片段

2022-09-19 10:45:12 字數 974 閱讀 5472

總共有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....