8.21 - hard - 74

358. Rearrange String k Distance Apart

這道題就是把所有值都進行最大區(qū)分,在重新加入heap的時候要注意,如果兩個值有同樣的count,那么后訪問過的要先加進去,比如說bba, size=1,先加入b,此時a,b的count都是1,這時候要先加入a,再加入b

class Solution(object):
    def rearrangeString(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: str
        """
        if k == 0:
            return s
        h = {}
        for c in s:
            h[c] = h.get(c, 0) + 1
        
        heap = []
        for key, val in h.iteritems():
            heapq.heappush(heap, [-val, key])
        
        res = []
        
        while heap:
            temp = []
            n = len(s) - len(res)
            for _ in range(min(k, n)):
                if not heap:
                    return ""
                cur_val, key = heapq.heappop(heap)
                res.append(key)
                cur_val += 1
                if cur_val != 0:
                    temp.append([cur_val, key])
            
            while temp:
                heapq.heappush(heap, temp.pop())
        
        return "".join(res)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,927評論 0 33
  • 貪心算法 貪心算法總是作出在當前看來最好的選擇。也就是說貪心算法并不從整體最優(yōu)考慮,它所作出的選擇只是在某種意義上...
    fredal閱讀 9,424評論 3 52
  • “好了,別哭了,男子漢大丈夫的,做正事要緊!”,說著便把一張硬紙皮做的入學申請遞給他,“去到門衛(wèi)室那里遞上這...
    韓軒彬少閱讀 424評論 0 3
  • 今天,是我生命中獨一無二僅有的一天,如果一切如我所愿,在未來我將還有19746天,在一去不復返的金天里,天氣轉(zhuǎn)涼。...
    明月心如我閱讀 176評論 0 0

友情鏈接更多精彩內(nèi)容