描述 | |
---|---|
知识点 | 字符串 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 整数N,后续N个名字 N个字符串,每个表示一个名字 |
输出 | 每个名称可能的最大漂亮程度 |
样例输入 | 2 zhangsan lisi |
样例输出 | 192 101 |
定义函数getBeauty(), 用来计算输入形参 名称 的最大漂亮程度,然后循环调用计算每个名称的最大漂亮程度。
对于每个名称,定义int型数组freq[26]记录每个字母(不论大小写)的频次,再对freq[26]进行升序排列,再按照上述公式计算结果sum
- #include <iostream>
- #include <string>
- #include <algorithm>
- using namespace std;
- int getBeauty(string s){
- int freq[26] = {0};
- int sum = 0;
- int size = s.size();
- for(int i = 0; i < size; i++){
- if(s[i] >= 'a' && s[i] <= 'z')
- freq[s[i] - 'a']++;
- else
- freq[s[i] - 'A']++;
- }
- sort(freq, freq + 26);
- for(int i = 25; i >= 0 && freq[i]; i--)
- sum += freq[i] * (i + 1);
- return sum;
- }
- void main(){
- int N = 0;
- cin >> N;
- string strs[100];
- for(int i = 0; i < N; i++)
- cin >> strs[i];
- for(int i = 0; i < N; i++)
- cout << getBeauty(strs[i]) << endl;
- }