如何按频率排序字符串,然后按字母顺序排序?

时间:2012-11-07 01:19:28

标签: java

对于练习,我想按频率按顺序排序ASCII字符串,然后按字母顺序排序,因此'banana'应该变成'bnnaaa','grammar'应该变成'gaammrr'。这是我到目前为止所拥有的。

public static orderByFrequencyAndThenAlphabet(String str) {
  // 128 ASCII characters possible.
  int[] charCount = new int[128]

  // Get the counts.
  str = str.toCharArray();
  for (char c : str) {
    charCount[int(c)] += 1;
  }

  // Sort by frequency...
}

如您所见,我创建了一个数据结构来存储输入字符串中每个字符的计数。但是,我现在如何使用数据结构按频率对字符进行排序?我应该考虑使用优先级队列吗?

1 个答案:

答案 0 :(得分:1)

您所要做的就是创建一个字符数组来存储字符串中的所有字符(注意字符数组的大小必须是字符串的长度)。然后对字符数组应用排序(任何你习惯的冒泡排序)然后用排序字符数组构造一个新字符串(注意在排序数组时确保正确的字符大小写)。这是低效的,但它完成了工作。