1371 每個母音包含偶數次的最長子字串

2021-10-06 08:17:14 字數 1034 閱讀 4490

難度:中等

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 示例...