跳到主要内容

2182.构造限制重复的字符串

链接:2182.构造限制重复的字符串
难度:Medium
标签:贪心、哈希表、字符串、计数、堆(优先队列)
简介:给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全部字符。返回 字典序最大的 repeatLimitedString 。

题解 1 - python

  • 编辑时间:2024-01-13
  • 执行用时:212ms
  • 内存消耗:18.19MB
  • 编程语言:python
  • 解法介绍:计数,贪心。
class Solution:
def repeatLimitedString(self, s: str, repeatLimit: int) -> str:
counter = Counter(s)
arr = list(counter.items())
arr.sort()
ans = ''
while arr:
ch, cnt = arr.pop()
while cnt:
cur_cnt = min(cnt, repeatLimit)
cnt -= cur_cnt
ans += ch * cur_cnt
if cnt:
if arr:
ans += arr[-1][0]
arr[-1] = (arr[-1][0], arr[-1][1] - 1)
if arr[-1][1] == 0:
arr.pop()
else:
break
return ans