【leetcode 1371. 每个元音包含偶数次的最长子字符串】Python解题思路

题目链接

给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。

参照官方题解写的python代码

class Solution:
    def findTheLongestSubstring(self, s: str) -> int:
        location=[-1]*32 #保存各个状态最早出现位置
        n=len(s)
        status=0
        ans=0
        location[0]=0
        for pp in range(n):
            i=s[pp]
            if i=='a':
                status=status^(1<<0)
            elif i=='e':
                status=status^(1<<1)
            elif i=='i':
                status=status^(1<<2)
            elif i=='o':
                status=status^(1<<3)
            elif i=='u':
                status=status^(1<<4)
            if location[status]!=-1:
                ans=max(ans,pp+1-location[status])
            else:
                location[status]=pp+1 # 因为location[0]=0,所以后续状态的位置累加1
        return ans

你可能感兴趣的:(leetcode,字符串,python,leetcode)