计算在 Python 中使字符频率唯一所需的最小删除次数的程序
假设我们有一个字符串s,如果s中没有两个不同的字符频率相同,则称s是好的。我们必须找到需要删除的最少字符数才能生成一个好的字符串。
因此,如果输入类似于s="ssstttuu",那么输出将是2,因为如果我们删除一个't',那么将有三个's'、两个't'和两个'u',然后再次删除一个,“t”或“u”,使它们变得更好。
示例
让我们看看以下实现以获得更好的理解-
from collections import Counter
def 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
热门推荐
10 祝孙辈生日祝福语简短
11 恋人跨年祝福语大全简短
12 考大学敬酒简短祝福语
13 开工投产大吉祝福语 简短
14 偶然结婚祝福语朋友简短
15 感谢学长学姐祝福语简短
16 戏精的祝福语简短
17 我要结婚祝福语简短
18 婚前女儿生日祝福语简短