451 根據字元出現頻率排序(排序)

2021-10-24 13:04:53 字數 869 閱讀 6613

給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。

這個問題也是乙個topk問題,只不過變成了統計char的個數。

class

solution

// 首先統計不同的元素出現的次數。

mapmap=

newhashmap

<

>()

;for

(char str: s.

tochararray()

)else

}// 遍歷map,用大頂堆儲存頻率最大的k個元素

priorityqueue

> pq=

newpriorityqueue

<

>

((e1, e2)

-> e2.

getvalue()

- e1.

getvalue()

);pq.

addall

(map.

entryset()

);//將map中的每乙個"k-v"對,作為乙個元素存入到pq這個大頂堆

stringbuilder sb=

newstringbuilder()

;while

(!pq.

isempty()

)}return sb.

tostring();}}

451 根據字元出現頻率排序

給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...

451 根據字元出現頻率排序

給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...

玩轉lee451 根據字元出現頻率排序

給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...