假设我们有一个由小写字母字符组成的字符串s和另一个数字k,我们必须找出字符串中所需更改的最小数量,以便最终的字符串最多具有k个不同的字符。在这种情况下,更改实际上是将单个字符更改为任何其他字符。
因此,如果输入像s =“ wxxyyzzxx”,k = 3,则输出将为1,因为我们可以删除字母“ w”以得到3个不同的字符(x,y和z)。
为了解决这个问题,我们将遵循以下步骤-
count:= s中每个字符及其频率的映射
sv:=频率值的排序列表
回答:= 0
对于0到(计数大小)-k-1范围内的i
ans:= ans + sv [i]
返回ans
让我们看下面的实现以更好地理解-
from collections import Counter class Solution: def solve(self, s, k): count = Counter(s) sv = sorted(count.values()) ans = 0 for i in range(len(count) - k): ans += sv[i] return ans ob = Solution() s = "wxxyyzzxx" k = 3 print(ob.solve(s, k))
"wxxyyzzxx",3
输出结果
1