294 翻轉遊戲 II

2021-10-09 10:21:46 字數 688 閱讀 7019

題目描述:

你和朋友玩乙個叫做「翻轉遊戲」的遊戲,遊戲規則:給定乙個只有 + 和 - 的字串。你和朋友輪流將 連續 的兩個 「++」 反轉成 「–」。 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。

請你寫出乙個函式來判定起始玩家是否存在必勝的方案。

示例:

輸入: s = 「++++」

輸出: true

解析: 起始玩家可將中間的 「++」 翻轉變為 「±-+」 從而得勝。

延伸:請推導你演算法的時間複雜度。

方法1:

主要思路:

(1)使用unordered_map統計之前出現過的字串的結果,進行剪枝操作;

(2)考慮當前字串變換一次之後,在變換的基礎上,對方若是不能贏,則本次就是能贏的,否則遍歷後面可能的字串的變換;

class

solution

//變換可能的選項

for(

int i=

1;isize()

;++i)}}

//所有的可能贏的結果遍歷結束之後,則當前的為不能贏

mp[s]

=false

;return

false;}

};

294 翻轉遊戲 II

你和朋友玩乙個叫做 翻轉遊戲 的遊戲,遊戲規則 給定乙個只有 和 的字串。你和朋友輪流將 連續 的兩個 反轉成 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。請你寫出乙個函式來判定起始玩家是否存在必勝的方案。示例 輸入 s 輸出 true 解析 起始玩家可將中間的 翻轉變為 從而得勝。延...

293 翻轉遊戲

你和朋友玩乙個叫做 翻轉遊戲 的遊戲,遊戲規則 給定乙個只有 和 的字串。你和朋友輪流將 連續 的兩個 反轉成 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。請你寫出乙個函式,來計算出第一次翻轉後,字串所有的可能狀態。示例 輸入 s 輸出 1.字串操作 class solution ve...

Google演算法題 翻轉遊戲

九章演算法 link 你和你的朋友正在玩乙個翻轉遊戲 給定乙個只包含 和 的字串,你和你的朋友輪流進行以下操作 翻轉兩個連續的 使得 變成 無法進行操作的一方為輸。那麼給出乙個字串,假設你先進行操作,你是否一定會贏呢?example s 返回true,表示你一定會贏。只需翻轉第二個和第三個加號使得 ...