华为机试26:名字的漂亮度
描述
给出一个名字,该名字有26个字符组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。
本题含有多组数据。
输入描述:整数N,后续N个名字
输出描述:每个名称可能的最大漂亮程度
示例1
输入:
2
zhangsan
lisi
输出:
192
101
题解:
1)求出去重后各个字母出现的个数。
2)出现重复字母最多的为26,次多为25依次类推。
zhangsan–a:26 a:26 n:25 n:25 z:24 h:23 g:22 s:21
#include
#include
#include
#include
using namespace std;int main()
{int N;cin>>N;string str;for(int i = 0;i<N;i++){cin>>str;vector<int> t;for(int j = 0;j<str.size();j++){t.push_back(1);for(int k = j+1;k<str.size();k++){if(str[j] == str[k] || (str[j]-str[k]) == 32 ||(str[j]-str[k]) == -32){++t[j];str.erase(str.begin()+k);k = k-1;}}}sort(t.begin(),t.end());int sum = 0,r =26;for(int i = t.size()-1;i>=0;i--){sum = sum+t[i]*r;--r;}cout<<sum<<endl;}
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
