题解 | #名字的漂亮度#C++

名字的漂亮度

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

  1. 给字符串排序
  2. 将每个字符的个数保存到数组中
  3. 数组排序
  4. 从数组后面逐个与26,25,24,...进行相乘求和
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;


int main () {
    int n;
    cin >> n;
    string s;
    while (cin >> s) {
        int ans = 0;
        // 给字符串排序
        sort(s.begin(), s.end());
        vector<int> arr;
        char temp = s[0];
        // 将每个字符的个数保存到数组中
        for (int i = 0, j = 0; i < s.size(); ++i) {
            if (i == s.size() - 1) {
                if (s[i] == temp) {
                    arr.push_back(i - j + 1);
                    break;
                } else {
                    arr.push_back(i - j);
                    arr.push_back(1);
                    break;
                }
            }
            if (i != s.size() - 1 && s[i] != temp) {
                arr.push_back(i - j);
                j = i;
                temp = s[i];
            }
        }
        // 数组排序
        sort(arr.begin(), arr.end());
        // 从数组后面逐个与26,25,24,...进行相乘求和
        for (int j = arr.size() - 1, i = 26; j >= 0; --j, --i) {
            ans += arr[j] * i;
        }
        cout << ans << endl;

    }


    return 0;
}
全部评论
我思路跟你完全一样hh
点赞 回复 分享
发布于 2021-11-14 21:41

相关推荐

程序员小白条:三方不签,不就是纯实习骗人吗,还是小公司,没毛了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务