難度:中等
2020/5/20每日一題打卡 √ 字首和+狀態壓縮+雜湊表
今天2020520,算是乙個很特別的日子了!
但是每日一題還是要寫的(抄題解的一天)
類似的題:1124. 表現良好的最長時間段
題目描述
解題思路
參考題解:每個母音包含偶數次的最長子字串 官方題解
❤將題目一步步等價轉化 | 「非奇即偶」 與二進位制的聯絡
模模糊糊的看懂了一點
首先由 最長連續子串這點想到字首和,字首和能效率很高的遍歷區間找到符合要求的,比如優美子陣列的那道題。然後為了方便的判斷兩個區間是否滿足要求,對狀態進行壓縮,用5位二進位制位來表示每個母音的奇偶性。每出現乙個母音字母,就用上乙個狀態和對應的位進行異或,利用了異或的特性,異或一次是1,兩次就是0.
依次求出每個位置的狀態,找一找前面有沒有相同的狀態,如果有就採用最左邊那個計算距離,然後找最大的距離。
為什麼相同的狀態是滿足要求的呢,比如一開始的時候是00000,每個母音都沒出現過,遍歷到某個位置滿足要求,每個母音都出現了偶數次,這時狀態還是00000,把當前下標和上乙個下標相減就得到了區間長度
因為這裡狀態有限而且能算出來,所以可以用陣列來代替雜湊表會更高效,用雜湊表也可以的
/*
* 1371. 每個母音包含偶數次的最長子字串
* 2020//5/20每日一題打卡 狀態壓縮+字首+雜湊表
1371 每個母音包含偶數次的最長子字串
給你乙個字串 s 請你返回滿足以下條件的最長子字串的長度 每個母音字母,即 a e i o u 在子字串中都恰好出現了偶數次。示例 1 輸入 s eleetminicoworoep 輸出 13 解釋 最長子字串是 leetminicowor 它包含 e,i,o 各 2 個,以及 0 個 a,u 示例...
1371 每個母音包含偶數次的最長子字串
給你乙個字串 s 請你返回滿足以下條件的最長子字串的長度 每個母音字母,即 a e i o u 在子字串中都恰好出現了偶數次。示例 1 輸入 s eleetminicoworoep 輸出 13 解釋 最長子字串是 leetminicowor 它包含 e,i,o 各 2 個,以及 0 個 a,u 示例...
1371 每個母音包含偶數次的最長子字串
給你乙個字串 s 請你返回滿足以下條件的最長子字串的長度 每個母音字母,即 a e i o u 在子字串中都恰好出現了偶數次。示例 1 輸入 s eleetminicoworoep 輸出 13 解釋 最長子字串是 leetminicowor 它包含 e,i,o 各 2 個,以及 0 個 a,u 示例...