【LeetCode】 451. 根据字符出现频率排序

题目

题目传送门:传送门(点击此处)
【LeetCode】 451. 根据字符出现频率排序_第1张图片

题解

  1. 首先需要考虑的是要记录每个字符字符出现的次数
  2. 然后,根据出现的次数放入到数组中,数组大小为字符长度,最多可能出现字符长度次,如果两个字符出现的次数一样,就拼接起来
  3. 倒序打印数组里面的字符就可以了

【LeetCode】 451. 根据字符出现频率排序_第2张图片

这代码虽然不是很好看,但是思路还是比较清晰的

class Solution {
    public String frequencySort(String s) {
        int[] count = new int[127]; // 记录出现次数
        for (int i = 0; i < s.length(); i++) {
            count[s.charAt(i)]++;
        }
        String[] strs = new String[s.length() + 1];
        for (int i = 0; i < count.length; i++) { // 按照出现次数放进数组中
            int c = count[i];
            if (c != 0) {
                if (strs[c] == null) strs[c] = "";
                int temp = i;
                strs[c] += String.valueOf((char) temp);
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = s.length(); i > 0; i--) { // 倒序打印
            String temp = strs[i];
            if (temp != null)
                for (int j = 0; j < temp.length(); j++) {
                    char tempc = temp.charAt(j);
                    for (int k = 0; k < i; k++) {
                        sb.append(tempc);
                    }
                }
        }

        return sb.toString();
    }
}

你可能感兴趣的:(LeetCode刷题记录与总结)