题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct word_count
{
public:
char a;
int number_character;
word_count()=default;
word_count(char m, int n): a(m),number_character(n) {};
};
bool compare_word(const word_count &a,const word_count &b)
{
return a.number_character<b.number_character;
}
int find_character(vector<word_count> & x, char s)
{
for(int i = 0;i!=x.size();++i)
{
if(x[i].a == s)
{
return i;
}
}
return -1;
}
int maxBeautifulName(string &s)
{
int r = 0;
vector<word_count> a;
for(auto &i:s)
{
int j =find_character(a, i);
if(j!=-1)
{
++a[j].number_character;
}
else {
word_count temp(i,1);
a.push_back(temp);
}
}
sort(a.begin(),a.end(),compare_word);
int count = 26;
for(auto i = a.rbegin();i!=a.rend();++i)
{
r+=i->number_character * count;
--count;
}
return r;
}
int main() {
int N;
cin>>N;
string name;
cin.ignore();
for(int i = 0;i!=N;++i)
{
getline(cin, name);
int r = maxBeautifulName(name);
cout<<r<<endl;
}
}
// 64 位输出请用 printf("%lld")
这个题的核心是设定一个新的类,包含一个字符,和一个出现次数number。
