zoukankan      html  css  js  c++  java
  • LeetCode 451. 根据字符出现频率排序

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

    示例 1:

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

    示例 2:

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

    示例 3:

    输入:
    "Aabb"
    
    输出:
    "bbAa"
    
    解释:
    此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。
    注意'A'和'a'被认为是两种不同的字符。

    思路:记录每个字母的出现的频率就好了,我是用一个结构体来存,当然也可以用map
    //map
    unordered_map<char, int> m;
    for (int i = 0; i < str.size(); ++i)
    {
                m[str[i]]++;
    }
    //结构体
    struct node
    {
        string zimu;
        int cou=0;
    } ans[250];
    
    for(i=0; i<len; i++)
    {
                int tem=(int)p[i];
                ans[tem].zimu=p[i];
                ans[tem].cou++;
    }

    然后在对结构体按照出现次序排序即可

    int cmp(node a,node b)
    {
        return a.cou>b.cou;
    }
    
    sort(ans+65,ans+65+123,cmp);
  • 相关阅读:
    lvs+keepalive安裝部署文檔
    北邮 -3.29
    第一章
    CG-CTF 部分
    bugku部分
    1062 Talent and Virtue (25分)(水)
    1061 Dating (20分)
    1060 Are They Equal (25分)
    素数筛选
    1059 Prime Factors (25分)
  • 原文地址:https://www.cnblogs.com/tijie/p/10034569.html
Copyright © 2011-2022 走看看