LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個非空的字符串 s 和一個整數(shù) k,你要將這個字符串中的字母進行重新排列,使得重排后的字符串中相同字母的位置間隔距離至少為 k。
所有輸入的字符串都由小寫字母組成,如果找不到距離至少為 k 的重排結(jié)果,請返回一個空字符串 “”。
示例 1: 輸入: s = "aabbcc", k = 3 輸出: "abcabc" 解釋: 相同的字母在新的字符串中間隔至少 3 個單位距離。示例 2: 輸入: s = "aaabc", k = 3 輸出: "" 解釋: 沒有辦法找到可能的重排結(jié)果。示例 3 輸入: s = "aaadbbcc", k = 2 輸出: "abacabcd" 解釋: 相同的字母在新的字符串中間隔至少 2 個單位距離。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rearrange-string-k-distance-apart
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
類似題目:LeetCode 767. 重構(gòu)字符串(堆)
- 先對字符計數(shù)
- 將 <字符,計數(shù)> 插入優(yōu)先隊列(數(shù)量優(yōu)先,字符順序其次)
- 隊列的 size >= k 時,取出前 k 大的加入 ans 字符串,相應字符計數(shù) -1,將計數(shù)不為0的再次放回隊列
- 當隊列 size < k 時,隊列內(nèi)的計數(shù)都只能為 1, 不然多出來的字符間隔不能 滿足 k 的要求
128 ms 12.7 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode 1917. 切割剩余金
- 下一篇: 天池 在线编程 寻找字母(计数)