題目:給你乙個字串 s ,請你返回滿足以下條件的最長子字串的長度:每個母音字母,即 『a』,『e』,『i』,『o』,『u』 ,在子字串中都恰好出現了偶數次。
示例 1:
輸入:s =
"eleetminicoworoep"
輸出:13
解釋:最長子字串是 "leetminicowor" ,它包含 e,i,o 各 2 個,以及 0 個 a,u 。
示例 2:
輸入:s =
"leetcodeisgreat"
輸出:5
解釋:最長子字串是 "leetc" ,其中包含 2 個 e
示例3:
輸入:s =
"bcbcbc"
輸出:6
解釋:這個示例中,字串 "bcbcbc" 本身就是最長的,因為所有的母音 a,e,i,o,u 都出現了 0 次。
分析:從題目給出的條件以及提示中可以看到,要求的是求子字串的母音字母最優解,以及只能出現偶數這時應該想到位運算的異或
用乙個state狀態用位運算來記錄不同的母音出現的次數,如果偶數則抵消之前的值。再用map儲存記錄的state以及下標
**如下:
class
solution}if
(map.
containskey
(state)
) map.
putifabsent
(state, i);}
return maxsize;
}}
說明:putifabsent(int key,int value);查詢key值是否存在,如果存在則拿出之前存在的值,如果不存在則覆蓋。
純個人記錄學習。
hdu1429位運算狀態壓縮
第一次接觸位運算的狀態壓縮,這題本來我是用優先佇列寫的,用vector儲存鑰匙。本來以為會超時,沒想到是記憶體超限。無奈,找大神,發現正確姿勢是狀態壓縮。這題用來學 位運算的狀態壓縮是相當不錯,很好理解。題意是乙個人在乙個迷宮裡逃生,迷宮有鎖,有鑰匙,相應的鑰匙開相應的鎖。共有10種鎖。利用位運算就...
狀態壓縮DP之位運算總結
介紹 在進行dp題目分析時,針對狀態或子狀態可以抽象為 0 1 排列組合的題目時,將其 0 1 序列轉化為二進位制數,再而轉換為十進位制數,可以更加便捷的對其進行資料分析處理,減少因為混亂所造成的一些不必要的錯誤。魔鬼往往藏在細節之中。常用運算子 都是十進位制數在二進位制下所做的運算,返回十進位制的...
zoj 2297 DP 位運算狀態壓縮
越來越覺得位運算好神啊。用位運算來儲存每個狀態 include include include include include include include include include include include include include include include includ...