计算在 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 兄妹拍照祝福语简短的话