题解 | #名字的漂亮度#

名字的漂亮度

http://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

  1. rbegin, rend. 可以递增排序。
  2. 刚开始全部转换为小写,方便以后统计。transform(s.begin(),s.end(),s.begin(),::tolower);//变成小写
  3. 漂亮度得定义://漂亮度 为 该字母出现得次数乘以26递减
#include<bits/stdc++.h>

using namespace std;

int main(){
    int n;

    while(cin>>n){
        vector<string> v;
        string s;
        for(int i=0; i< n;i++){
            cin>>s;
            transform(s.begin(),s.end(),s.begin(),::tolower);//变成小写
            v.push_back(s);
        }



        for(int i=0; i < v.size();i++){
            string str = v[i];
            map<char,int> m;//统计次数

            for(auto s: str){
                m[s]++;
            }

            vector<int> ve;//记录每一个字母出现得次数
            for(auto x: m){
                ve.push_back(x.second);
            }

            //从大到小进行排序(注意前面有r)
            sort(ve.rbegin(),ve.rend());

            int sum =0;

            for(int i =0, j = 26; i< ve.size();i++,j--){
                sum += ve[i]*j;//漂亮度 为 该字母出现得次数乘以26递减
            }
            cout<<sum<<endl;


        }

    }


    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务