力扣题:字符的统计-12.1

力扣题-12.1

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

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

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

力扣题:字符的统计-12.1_第1张图片

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;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)