力扣题:字符的统计-12.1

力扣题-12.1

[力扣刷题攻略] Re:从零开始的力扣刷题生活

力扣题1:451. 根据字符出现频率排序

解题思想:统计字符出现的个数,进行排序即可

在这里插入图片描述

class Solution(object):
    def frequencySort(self, s):
        """
        :type s: str
        :rtype: str
        """
        char_count = {}
        
        for i in range(len(s)):
            if s[i] in char_count:
                char_count[s[i]] += 1
            else:
                char_count[s[i]] = 1
        
        sorted_char_count = OrderedDict(sorted(char_count.items(), key=lambda item: item[1], reverse=True))
        result = ''
        
        for char, count in sorted_char_count.items():
            result = result + char * count
        
        return result
class Solution {
public:
    string frequencySort(string s) {
        std::unordered_map<char, int> char_count;
        for (char c : s) {
            if (char_count.find(c) != char_count.end()) {
                char_count[c] += 1;
            } else {
                char_count[c] = 1;
            }
        }
        std::vector<std::pair<char, int>> char_freq_vec(char_count.begin(), char_count.end());

        std::sort(char_freq_vec.begin(), char_freq_vec.end(),
                  [](const auto& a, const auto& b) {
                      return a.second > b.second;
                  });

        std::string result;
        for (const auto& p : char_freq_vec) {
            result += std::string(p.second, p.first);
        }

        return result;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值