时间限制:1秒 空间限制:32768K
题目描述
有一种有趣的字符串价值计算方式:统计字符串中每种字符出现的次数,然后求所有字符次数的平方和作为字符串的价值
例如: 字符串"abacaba",里面包括4个'a',2个'b',1个'c',于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21
牛牛有一个字符串s,并且允许你从s中移除最多k个字符,你的目标是让得到的字符串的价值最小。
例如: 字符串"abacaba",里面包括4个'a',2个'b',1个'c',于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21
牛牛有一个字符串s,并且允许你从s中移除最多k个字符,你的目标是让得到的字符串的价值最小。
输入描述:
输入包括两行,第一行一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),其中只包含小写字母('a'-'z')。 第二行包含一个整数k(0 ≤ k ≤ length),即允许移除的字符个数。
输出描述:
输出一个整数,表示得到的最小价值
示例1
输入
aba 1
输出
2
Python Code:
string = input() k = int(input()) len_str = len(string) diff_str = {} for i in range(len_str): if string[i] in diff_str: diff_str[string[i]] += 1 else: diff_str[string[i]] = 1 str_num = sorted(diff_str.values(), reverse=True) while k>0: str_num[0] -= 1 k = k-1 str_num.sort(reverse=True) print(sum([i*i for i in str_num]))
解题思路:考虑到要首先统计每个字符的个数,用字典来统计比较方便;然后将字典元素排序,删除其中可移除的字符;最后计算字符串的价值。