1

为了练习,我想在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...
}

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

4

1 回答 1

1

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

于 2012-11-07T01:28:45.237 回答