0
点赞
收藏
分享

微信扫一扫

根据字符出现频率排序

朱小落 2021-09-21 阅读 18
今日算法
题目描述:
示例 1:
解释:
示例 2:
解释:
示例 3:
解释:

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

思路:
代码实现:
class Solution {
    public String frequencySort(String s) {
        if (s == null || s.length() == 0 || s.length() == 1) return s;
        Map<String, Integer> map = new HashMap();
        for (int i = 0; i < s.length(); i++) {
            Integer num = map.getOrDefault(s.charAt(i) + "", 0);
            if (num != 0) {
                map.put(s.charAt(i) + "", ++num);
            } else {
                map.put(s.charAt(i) + "", 1);
            }
        }
        StringBuilder sb = new StringBuilder();
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet().stream().sorted(Comparator.comparing((o2) -> o2.getValue())).collect(Collectors.toCollection(LinkedHashSet::new));
        for (Map.Entry<String, Integer> entry : entrySet) {
            for (int i = 0; i < entry.getValue(); i++) {
                sb.append(entry.getKey() + "");
            }
        }
        return sb.reverse().toString();
    }
}
举报

相关推荐

字符出现频率统计

0 条评论