Wei
BAN USERBest solution, Main idea is what anonyguru said.
here I use an array B of length 3 to maintain the disjoint set we need to delete every time.
when A[i] == B[j],count[j]++,when both B[0] B[1] B[2] !=0, we find a disjoint set which can delete. so we do for j in range(0,3):
count[j]--
S='10101010'
S=list(S)
different=[]
Hash={}
def longest(x):
max1=0
for i in range(0,len(x)):
different.append(0)
if x[0]=='1':
different[0]=1
else:
different[0]=0
for i in range(1,len(x)):
if x[i]=='1':
different[i]=different[i-1]+1
else:
different[i]=different[i-1]-1
for i in range(0,len(x)):
if different[i] in Hash:
judge=i-Hash[different[i]]+1
max1=max(max1,judge)
else:
Hash[different[i]]=i
return max1
Oh,sorry, my mistake, ur right
- Wei February 16, 2015