• 451. Sort Characters By Frequency


    Given a string, sort it in decreasing order based on the frequency of characters.

    Example 1:

    Input:
    "tree"
    
    Output:
    "eert"
    
    Explanation:
    'e' appears twice while 'r' and 't' both appear once.
    So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
    

    Example 2:

    Input:
    "cccaaa"
    
    Output:
    "cccaaa"
    
    Explanation:
    Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.
    Note that "cacaca" is incorrect, as the same characters must be together.

    Example 3:

    Input:
    "Aabb"
    
    Output:
    "bbAa"
    
    Explanation:
    "bbaA" is also a valid answer, but "Aabb" is incorrect.
    Note that 'A' and 'a' are treated as two different characters.
    题目含义:按字母出现次数的降序重排字符串

     1     public String frequencySort(String s) {
     2         Map<Character, Integer> map = new HashMap<>();
     3         for (int i = 0; i < s.length(); i++) {
     4             map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0)+1);
     5         }
     6         PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>(
     7                 new Comparator<Map.Entry<Character, Integer>>() {
     8                     @Override
     9                     public int compare(Map.Entry<Character, Integer> a, Map.Entry<Character, Integer> b) {
    10                         return b.getValue() - a.getValue();
    11                     }
    12                 }
    13         );
    14         pq.addAll(map.entrySet());
    15         StringBuilder sb = new StringBuilder();
    16         while (!pq.isEmpty()) {
    17             Map.Entry<Character, Integer> e = pq.poll();
    18             for (int i = 0; i < e.getValue(); i++) {
    19                 sb.append(e.getKey());
    20             }
    21         }
    22         return sb.toString();        
    23     }
  • 相关阅读:
    python面试的100题(2)
    面试题目和地址
    python面试的100题(1)
    no module named系列问题解决
    ubuntu16.04无法打开终端
    Reinforcement Learning,微信公众号:DRL学习
    Java中的I/O操作File
    Java中的Date时间转换【SimpleDateFormat (parse和format)】和Calendar日历表
    重写equals方法
    Java中栈,堆,常量池的简单理解
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7719188.html
Copyright © 2020-2023  润新知