[451]Sort Character by Frequency

Sort Character by Frequency

bucket sort

For this problem, each frequency should be bounded in 0-len. (len is the length of the string).
To achieve the O(n), use bucket sort.

To put the same character together, use a arraylist for each bucket unit.

import java.util.ArrayList;

public class Solution {
    public String frequencySort(String s) {
        ArrayList[] bucket = new ArrayList[s.length() + 1];

        int[] mp = new int[128];
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            mp[c]++;
        }

        for(int i = 0; i < mp.length; i++){
            int f = mp[i];
            if(f != 0){
                if(bucket[f] == null){
                    bucket[f] = new ArrayList<Integer>();
                }
                bucket[f].add(i);
            }
        }

        StringBuilder sb = new StringBuilder();
        for(int i = bucket.length - 1; i > 0; i--){
            if(bucket[i] == null) continue;
            for(Object o : bucket[i]){
                int k = (Integer)o;
                for(int j = 0; j < i; j++){
                    sb.append((char)k);
                }

            }
        }

        return sb.toString();


    }
}

notes about generics

For this bubble sort, it use some generics array. see the reference.
generics gotcha

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 微信小程序里面显示图片会用到 image 组件,该组件默认宽度300px、高度225px,使用时需要自己设置宽度 ...
    june5253阅读 6,349评论 1 2
  • 姓名:千羽紫寒(原名:奚梦瑶 假名:冷紫寒) 性格:冷艳 爱好:只有你想不到没有她做不到 身高:175cm。 年...
    嗜血幻紫瞳阅读 809评论 0 1
  • 我不单身,在还没来得及贴上剩女标签的时候,便远离了这支队伍。这不是老天对我的眷顾,因为那些还单着的人,老天也绝对没...
    xhhr阅读 238评论 0 4
  • 咖啡厅里品咖啡 休闲时光品休闲 沉浸在这美好的时光中 顿时感觉一切都安静了 思绪万千 蓄势待发
    在草坪上做白日梦阅读 203评论 0 1