zoukankan      html  css  js  c++  java
  • 查找表的算法//根据字符出现频率排序

    给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

    示例 1:

    输入:
    "tree"
    
    输出:
    "eert"
    
    解释:
    'e'出现两次,'r'和't'都只出现一次。
    因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
    

    示例 2:

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

    示例 3:

    输入:
    "Aabb"
    
    输出:
    "bbAa"
    
    解释:
    此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
    注意'A'和'a'被认为是两种不同的字符。
    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;
        }
    };
    class Solution {
    public:
        string frequencySort(string s) {
            string res = "";
            vector<string> v(s.size()+1,"");
            unordered_map<char,int> m;
            for(char c:s) ++m[c];
            for(auto &a:m){
                v[a.second].append(a.second,a.first);
            }
            for(int i=s.size();i>0;i--){
                if(!v[i].empty()){
                    res.append(v[i]);
                }
            }
            return res;
        }
    };
  • 相关阅读:
    【LeetCode】面试题59
    【LeetCode】面试题57
    【LeetCode】面试题57
    Chrome查看Markdown并转为PDF
    【LeetCode】232. 用栈实现队列
    【LeetCode】27. 移除元素
    【LeetCode】1323. 6 和 9 组成的最大数字
    【LeetCode】167. 两数之和 II
    第14条:在公有类中使用访问方法而非公有域
    Android Studio项目中三种依赖的添加方式
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602392.html
Copyright © 2011-2022 走看看