计算在 Python 中使字符频率唯一所需的最小删除次数的程序
假设我们有一个字符串 s,如果 s 中没有两个不同的字符频率相同,则称 s 是好的。我们必须找到需要删除的最少字符数才能生成一个好的字符串。
因此,如果输入类似于 s = "ssstttuu",那么输出将是 2,因为如果我们删除一个 't',那么将有三个 's'、两个 't' 和两个 'u',然后再次删除一个,“t”或“u”,使它们变得更好。
示例
让我们看看以下实现以获得更好的理解 -
from collections import Counterdef solve(s):
val = Counter(s)
res = 0
numlist = sorted([i for i in val.values()])
for i in range(len(numlist)-1):
if numlist[i] and numlist[i] == numlist[i+1]:
numlist[i] -= 1
res += 1
k = i-1
m = i
while numlist[m] and numlist[m] == numlist[k]:
numlist[k] -= 1
k -= 1
m -= 1
res += 1
return res
s = "ssstttuu"
print(solve(s))
输入
"ssstttuu"输出结果
2
以上是 计算在 Python 中使字符频率唯一所需的最小删除次数的程序 的全部内容, 来源链接: utcz.com/z/361774.html