練習のために、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...
}
ご覧のとおり、入力文字列の各文字のカウントを格納するデータ構造を作成しました。ただし、データ構造を使用して文字を頻度順に並べ替えるにはどうすればよいでしょうか? 優先キューの使用を検討する必要がありますか?