Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solution(s):
- end = len(s) - 1
- c = {}
- forward = {}
- backward = {}
- for i in range(len(s) - 1, -1, -1):
- c[s[i]] = c.get(s[i],0) + 1
- backward[i] = c.copy()
- c = {}
- for i in range(0, len(s)):
- c[s[i]] = c.get(s[i],0) + 1
- forward[i] = c.copy()
- window_size = len(s) if len(s) % 2 == 0 else len(s) - 1
- if len(s) % 2 == 0:
- check = forward[end]
- if(len(check) == 2):
- x,y = check.values()
- if x == y:
- return window_size
- everything = forward[end]
- #print(everything)
- #print("WIdnow size : " ,window_size )
- for ws in range(window_size, 0, -2):
- cnt = len(s)-ws+1
- for i in range(0,cnt):
- sp_inc = i
- ep_inc = i+ws
- #print(sp_inc,ep_inc )
- c_forward = False
- c_backward = False
- sp = sp_inc -1
- if sp >= 0:
- c_forward = True
- if ep_inc <= end:
- c_backward = True
- d2 = backward[ep_inc].copy()
- #print(d1,d2,everything)
- result = dict()
- for k,v in everything.items():
- val0 = 0
- val1 = 0
- if c_forward:
- val0 = forward[sp].get(k,0)
- if c_backward:
- val1 = backward[ep_inc].get(k,0)
- result[k] = v - val0 - val1
- if(result[k] == 0):
- del result[k]
- if len(result) == 2:
- x,y = result.values()
- if x == y:
- #print(result)
- return ws
- return 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement