Python C++ bitmask解Leetcode 1371 Find the Longest Substring Containing Vowels in Even Counts
建構一個容器first_seen[32](5個母音考慮2**5=32),它表示第一次看到的32不同bmask的索引
[Python code請進]
Build a container first_seen[32] (5 vowels to consider 2**5=32) which denotes the index for 32 different bmask first seen
[codes on Leetcode]https://leetcode.com/problems/find-the-longest-substring-containing-vowels-in-even-counts/solutions/5788042/prefix-sum-with-xor-for-bit-mask-11-ms-beats-99-53/
[bit/ bitmask play list]https://www.youtube.com/watch?v=Hw1fnQA8Nk8&list=PLYRlUBnWnd5K8FlzJ6tOswqQcsk7R1Duh
- class Solution:
- def findTheLongestSubstring(self, s: str) -> int:
- vow=[-1]*26
- vow[0]=0
- vow[ord('e')-ord('a')]=1
- vow[ord('i')-ord('a')]=2
- vow[ord('o')-ord('a')]=3
- vow[ord('u')-ord('a')]=4
- n=len(s)
- first_seen=[-1]*32
- first_seen[0]=0
- curr=0
- Len=0
- for i in range(n):
- x=vow[ord(s[i])-ord('a')]
- if x!=-1: curr^=(1<<x)
- if first_seen[curr]==-1: first_seen[curr]=i+1
- Len=max(Len, i+1-first_seen[curr])
- return Len
沒有留言:
張貼留言