天天看點

[LeetCode] Sort Characters By Frequency 根據字元出現頻率排序

Given a string, sort it in decreasing order based on the frequency of characters.

Example 1:

Example 2:

Example 3:

這道題讓我們給一個字元串按照字元出現的頻率來排序,那麼毫無疑問肯定要先統計出每個字元出現的個數,那麼之後怎麼做呢?我們可以利用優先隊列的自動排序的特點,把個數和字元組成pair放到優先隊列裡排好序後,再取出來組成結果res即可,參見代碼如下:

解法一:

我們也可以使用STL自帶的sort來做,關鍵就在于重寫comparator,由于需要使用外部變量,記得中括号中放入&,然後我們将頻率大的傳回,注意一定還要處理頻率相等的情況,要不然兩個頻率相等的字元可能穿插着出現在結果res中,這樣是不對的。參見代碼如下:

解法二:

我們也可以不使用優先隊列,而是建立一個字元串數組,因為某個字元的出現次數不可能超過s的長度,是以我們将每個字元根據其出現次數放入數組中的對應位置,那麼最後我們隻要從後往前周遊數組所有位置,将不為空的位置的字元串加入結果res中即可,參見代碼如下:

解法三:

繼續閱讀