Leetcode 451 根据字符出现的频率排序

Leetcode 451 根据字符出现的频率排序

问题重述
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例 1:
输入: “tree” 输出: “eert”
解释:
'e’出现两次,'r’和’t’都只出现一次。
因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。

思路
和347的思路相同,都是用到了桶存储排序。不懂得可以去看347的思路。

最终代码

class Solution {
public:
    string frequencySort(string s) {
        unordered_map<int, int> counts;
        for (const auto & c : s) {
            ++counts[c];
        }
        vector<string> buckets(s.size() + 1);
        for (const auto & p : counts) {
            buckets[p.second].append(p.second, p.first);//字符串中append就是在字符串后面添加字符;
        }
        string ans;
        int k = 0;
        for (int i = s.size(); i > 0; --i) {
            ans.append(buckets[i]);
        }
        return ans;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UPC YR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值