zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    yum install mysql.i686
    firefox无法浏览flash的解决方案
    vb.net如何打开指定文件
    XML文件操作的简单类
    window server 安装与卸载
    常用的sql语句
    with进行递归表
    常用js
    调用Google的自动翻译
    MySQl 总结知识
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8901026.html
Copyright © 2011-2022 走看看