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)