1542. Find Longest Awesome Substring (Hard) - TengnanYao/daily_leetcode GitHub Wiki

class Solution(object):
    def longestAwesome(self, s):
        """
        :type s: str
        :rtype: int
        """
        n = len(s)
        result = 0
        mask = 0
        memo = [n] * 1024
        memo[0] = -1
        for i in range(n):
            mask ^= 1 << int(s[i])
            result = max(result, i - memo[mask])
            for j in range(10):
                temp = mask ^ (1 << j)
                result = max(result, i - memo[temp])
            memo[mask] = min(memo[mask], i)
        return result