• 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 class Solution {
     2     public String frequencySort(String s) {
     3         HashMap<Character, Integer> map = new HashMap<Character, Integer>();
     4         for (int i = 0; i < s.length(); i++) {
     5             if (map.containsKey(s.charAt(i)))
     6                 map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
     7             else
     8                 map.put(s.charAt(i), 1);
     9         }
    10         
    11         PriorityQueue< Map.Entry<Character, Integer> > pq = new PriorityQueue<>(
    12             new Comparator<Map.Entry<Character, Integer> >() {
    13                 public int compare (Map.Entry<Character, Integer> a, Map.Entry<Character, Integer> b) {
    14                     return b.getValue() - a.getValue();
    15                 }
    16             }
    17         );
    18         
    19         pq.addAll(map.entrySet());
    20         StringBuilder builder = new StringBuilder();
    21         while (!pq.isEmpty()) {
    22             Map.Entry entry = pq.poll();
    23             int frequency = (int) entry.getValue();
    24             for (int i = 0; i < frequency; i++) {
    25                 builder.append(entry.getKey());
    26             }
    27         }
    28         return builder.toString();
    29     }
    30 }
  • 相关阅读:
    百度脑图
    Bootstrap入门
    Tomcat热部署的三种方式
    There is a chart instance already initialized on the dom!警告
    Ubuntu14.04设置开机自启动脚本
    PRM路径规划算法
    A*算法
    V-rep学习笔记:串口操作
    V-rep学习笔记:机器人路径规划2
    V-rep学习笔记:机器人逆运动学解算
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/6416160.html
Copyright © 2020-2023  润新知