Advertisement
1sairandhri

reorganize str

Apr 3rd, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.96 KB | None | 0 0
  1.  
  2. from collections import Counter
  3. from heapq import heappush, heappop
  4.  
  5. class Solution:
  6.     def reorganizeString(self, S):
  7.         max_freq = Counter(S).most_common(1)[0][1]
  8.         if 2*max_freq -1 > len(S):
  9.             return ""
  10.         else:
  11.             heap = []
  12.             for k,v in Counter(S).items():
  13.                 heappush(heap, (v*-1, k))
  14.             result = []
  15.             while heap:
  16.                 v,k = heappop(heap)
  17.                 if not result or k != result[-1]: # can add the top most element
  18.                     result.append(k)
  19.                     if v != -1:
  20.                         heappush(heap,(v+1,k))
  21.                 else:                             # cannot add the top most element
  22.                     v1,k1 = heappop(heap)
  23.                     result.append(k1)
  24.                     heappush(heap, (v,k))
  25.                     if v1 != -1:
  26.                         heappush(heap, (v1+1,k1))
  27.             return "".join(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement