在C ++中删除所有出现的一个字符后,最小化ASCII值总和
假设我们有一个字符串。在删除每次出现的特定字符后,我们必须最小化字符串中每个字符的ASCII值之和。假设给出一个字符串,如“hello”,则ASCII字符的总和为(104+101+108+108+111)=532。现在检查每个字符的出现情况。
h发生过一次,因此成本为1*104=104
e发生过一次,因此成本为1*101=101
l发生过一次,因此成本为2*108=216
o发生过一次,因此成本为1*111=111
这里l发生的时间最长,因此,如果我们删除所有出现的l,则该值将最小化。因此,实际上我们从上面的列表中删除了最大值。最终结果将是532–216=316
首先,逻辑很简单,我们必须获取字符串的ASCII总和。然后计算字符串中每个字符的出现频率,然后删除在最大值*ASCII值中占最大值的那个字符。减去的值就是结果。
示例
#include <iostream>
using namespace std;
int minASCIISum(string str, int len) {
int max_val = INT_MIN, sum = 0;
int frequency[26] = { 0 };
for (int i = 0; i < len; i++) {
frequency[str[i] - 'a']++;
sum += (int)str[i];
}
for (int i = 0; i < 26; i++)
max_val = max(max_val, frequency[i] * (i + 'a'));
return (sum - max_val);
}
int main() {
string str = "hello";
int n = str.length();
cout << "Minimized Sum: " << minASCIISum(str, n);
}输出结果
Minimized Sum: 316
热门推荐
1 初八祝福语简短语
7 圆圆的祝福语简短
9 合字的祝福语简短
10 同事离别祝福语简短的
11 最搞笑生日祝福语简短
12 朋友花篮开业祝福语简短
13 浪漫的生日祝福语简短
14 简短大气的狗年祝福语
15 送笔筒的祝福语简短
16 婚庆花篮祝福语简短大气
17 妈妈祝福语简短16字
18 姐妹结婚快乐祝福语简短