leetcode-1371-每个元素包含偶数次的最长字符串

题目描述:

 

 

 

 

 

 方法:前缀和+状态压缩 O(N)

class Solution:
    def findTheLongestSubstring(self, s: str) -> int:
        bit_mask = eval('0b00000')
        state_first_idx = {eval('0b00000'):-1}
        vowels = 'aeiou'
        ans = 0
        for i in range(len(s)):
            if (idx:= vowels.find(s[i])) > -1:
                bit_mask ^= eval('0b10000') >> idx

            if bit_mask not in state_first_idx:
                state_first_idx[bit_mask] = i
            ans = max(ans,i - state_first_idx[bit_mask])
        return ans

 

posted @ 2020-05-20 20:08  oldby  阅读(250)  评论(0编辑  收藏  举报