767. Reorganize String (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def reorganizeString(self, s: str) -> str:
h = collections.Counter(s)
n = len(s)
m = max(h.values())
if m > (n + 1) // 2:
return ""
arr = sorted([[v, k] for k, v in h.items()], reverse = True)
result = [""] * n
for i in range(0, n, 2):
result[i] = arr[0][1]
arr[0][0] -= 1
if not arr[0][0]:
arr.pop(0)
for i in range(1, n, 2):
result[i] = arr[0][1]
arr[0][0] -= 1
if not arr[0][0]:
arr.pop(0)
return "".join(result)