2
def longestAwesome(self, s: str) -> int:3
# li = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]4
li = [2**i for i in range(10)]5
# checker = {0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512}8
# di: k = prefix xor, v = the first idx I got a new prefix_xor_value.9
di = collections.OrderedDict({0: -1})10
maxLength = prefix_xor = 012
for i in range(len(s)):13
prefix_xor ^= li[int(s[i])]14
# Found a new prefix_xor_value15
if prefix_xor not in di:18
# XOR operation with previous prefix_xor_value20
if i - di[key] <= maxLength:22
# s[di[key] : i] is Awesome Substring23
if key ^ prefix_xor in checker:24
maxLength = i - di[key]