题解 | #名字的漂亮度#

名字的漂亮度

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。

全部评论

相关推荐

02-23 00:10
湖南大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务