2012-11-07 101 views
0

實踐中,我想按頻率排序一個ASCII字符串,然後在java中按字母順序排列,所以'banana'應該變成'bnnaaa','語法'應該變成'gaammrr'。這是迄今爲止我所擁有的。如何按頻率排序字符串,然後按照java中的字母順序排序?

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... 
} 

正如你看到的,我做了一個數據結構存儲計數輸入字符串的每個字符。但是,我現在如何使用數據結構按字符對字符進行排序?我應該考慮使用優先隊列嗎?

+0

你可以看看Comparable接口嗎? –

回答

1

您只需創建一個字符數組來存儲字符串中的所有字符(注意字符數組的大小必須是字符串的長度)。然後你對字符數組應用一種排序(任何你喜歡的冒泡排序),然後用排序後的字符數組構造一個新字符串(注意排序數組時需要確保正確的字符大小)。這是低效的,但它完成了工作。

相關問題