• 451 Sort Characters By Frequency 根据字符出现频率排序


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

    示例 2:
    输入:
    "cccaaa"
    输出:
    "cccaaa"
    解释:
    'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。
    注意"cacaca"是不正确的,因为相同的字母必须放在一起。

    示例 3:
    输入:
    "Aabb"
    输出:
    "bbAa"
    解释:
    此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
    注意'A'和'a'被认为是两种不同的字符。
    详见:https://leetcode.com/problems/sort-characters-by-frequency/description/

    C++:

    方法一:

    class Solution {
    public:
        string frequencySort(string s)
        {
            string res = "";
            priority_queue<pair<int, char>> q;
            unordered_map<char, int> m;
            for (char c : s)
            {
                ++m[c];
            }
            for (auto a : m)
            {
                q.push({a.second, a.first});
            }
            while (!q.empty())
            {
                auto t = q.top();
                q.pop();
                res.append(t.first, t.second);
            }
            return res;
        }
    };
    

     方法二:

    class Solution {
    public:
        string frequencySort(string s)
        {
            unordered_map<char, int> m;
            for (char c : s)
            {
                ++m[c];
            }
            sort(s.begin(), s.end(), [&](char& a, char& b){
                return m[a] > m[b] || (m[a] == m[b] && a < b);
            });
            return s;
        }
    };
    

     参考:https://www.cnblogs.com/grandyang/p/6231504.html

  • 相关阅读:
    PAT:1002. 写出这个数 (20) AC
    PAT:1031. 查验身份证(15) AC
    PAT:1021. 个位数统计 (15) AC
    NSDate
    iOS程序的生命的周期
    Swift swith语句
    Swift 循环语句
    Swift 基本运算符
    Swift 解包
    Swift 可选类型(补充)
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8901026.html
Copyright © 2020-2023  润新知